du94414 2018-10-23 02:41
浏览 37
已采纳

返回的参数过多

I have this golang file:

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

}

I get this error:

Too many arguments to return

I am just trying to create a singleton pattern and return the db connection. I am not sure if what is returned from sqlx.Connect is type sqlx.DB, that might be the problem. Is there a quick way to determine the return type of sqlx.Connect()?

  • 写回答

1条回答 默认 最新

  • duanguan1573 2018-10-23 02:48
    关注

    You've declared the function GetDBConnection() to return no arguments.

    func GetDBConnection() {
    

    You have to tell Go the type of the argument you intend to return:

    func GetDBConnection() *sqlx.DB {
    

    As for determining the type, I just went to look at the source code. You could also look at the documentation on godoc.org, which is auto-generated from publicly available Go packages.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?