我有一个简单的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 {
documentation suggests它返回sql.DB
个实例。那么这不应该是返回类型吗?
我是golang的新手,所以只是第一次搞清楚大部分内容。
谢谢!
答案 0 :(得分:1)
Open
返回一个*sql.DB
,一个指向sql.Db的指针。更改功能签名也返回*sql.DB
:
func establish_db_connection() *sql.DB {