如何在golang中返回DB(数据库/ SQL)类型?

lab*_*ab0 4 postgresql go

我使用github.com/lib/pq将Go与PostgreSQL一起使用。

我想opendb()在其他函数中调用此函数,但是返回值有问题。

 package database

    import (
            "fmt"
            "database/sql"
            _ "github.com/lib/pq"
    )

    const (
            host = "localhost"
            port = 5432
            user = "postgres"
            password = "pgpassword"
            dbname = "postgres"
    )

    func opendb() (*DB) {
            psqlInfo := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s " +
              "sslmode=disable", host, port, user, password, dbname)

            db, err := sql.Open("postgres", psqlInfo)

            if err != nil {
                    panic(err)
            }

            defer db.Close()

            return db
    }
Run Code Online (Sandbox Code Playgroud)

如果运行此命令:

$ go run main.go
Run Code Online (Sandbox Code Playgroud)

它将显示此错误:

error:

    undefined: DB
Run Code Online (Sandbox Code Playgroud)

Shi*_*ore 5

返回数据类型应该正在*sql.DB
改变
func opendb() (*DB) {

func opendb() (*sql.DB) {

应该管用

  • 谢谢。并删除此行以延迟db.Close() (2认同)