在 golang 中返回任意数据类型

我有一个简单的 golang 例程,用于database/sql打开与我的 Postgres DB 的连接并执行一些操作


package main


import (

  "fmt"

  "database/sql"

  _ "github.com/lib/pq"

  "log"

)


const (

    DB_USER = "my_user"

    DB_NAME = "my_postgres_db"

)


// The return type here is wrong - what should it be?

func establish_db_connection() sql.DB {

  dbinfo := fmt.Sprintf(

    "user=%s password=%s dbname=%s sslmode=disable", 

    DB_USER, nil, DB_NAME)


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

  if err != nil { log.Fatal(err) }


  return db

}


func main() {

  // Get a connection to the DB

  db := establish_db_connection()


  // Do other stuff

  // ...

  // ...

}

我在为establish_db_connection函数编写签名时遇到问题-


func establish_db_connection() sql.DB {

该文件表明,它返回一个sql.DB实例。那么这不应该是返回类型吗?


我是 golang 的超级新手,所以只是第一次弄清楚其中的大部分内容。


千巷猫影
浏览 555回答 1
1回答

慕运维8079593

Open返回 a *sql.DB,一个指向 sql.Db 的指针。更改函数签名以也返回一个*sql.DB:func establish_db_connection() *sql.DB {
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go