2016-05-09 75 views
1

我有一個使用database/sql開到我的Postgres數據庫的連接,並做一些事情返回任意數據類型golang

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功能寫入簽名的簡單golang常規 -

func establish_db_connection() sql.DB { 

documentation suggests它返回一個sql.DB實例。那麼這不應該是返回類型嗎?

我是golang的超級新手,所以只是第一次把大部分內容都弄清楚了。

謝謝!

回答

1

Open返回*sql.DB,指向sql.Db的指針。更改函數簽名也返回*sql.DB

func establish_db_connection() *sql.DB { 
+0

謝謝你,我知道這是簡單的東西! – user2490003