我有这个golang文件:

package main

import (
    "log"
    "sync"

    "github.com/jmoiron/sqlx"
)

var db *sqlx.DB
var once sync.Once

// GetDBConnection whatever
func GetDBConnection() {

    once.Do(func() {
        db, err := sqlx.Connect("postgres", "user=tom dbname=jerry password=myPassword sslmode=disable")
        if err != nil {
            log.Fatalln(err)
        }
    })

    return db   // <<< error here

}

我收到此错误:

Too many arguments to return
我只是想创建一个单例模式并返回db连接。我不确定sqlx.Connect返回的类型是否为sqlx.DB,这可能是问题所在。有没有一种快速的方法来确定sqlx.Connect()的返回类型?

最佳答案

您已声明函数GetDBConnection()不返回任何参数。

func GetDBConnection() {

You have to tell Go您打算返回的参数类型:
func GetDBConnection() *sqlx.DB {

至于确定类型,我只是去了look at the source code。您还可以查看documentation on godoc.org,它是从公开可用的Go软件包中自动生成的。

关于go - 返回的参数过多,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52940406/

10-10 10:10