2016-05-09 17 views
1

に私はいくつかのもの返す任意のデータ型は、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機能のための署名を書いてトラブルを抱えているが、私のPostgresのDBへの接続を開くためにdatabase/sqlを使用しないシンプルなgolangルーチンを持っています -

func establish_db_connection() sql.DB { 

documentation suggestsそれはsql.DBインスタンスを返します。これは戻り値の型ではありませんか?

私はgolangに新しくなっています。だから、これのほとんどを初めて理解するだけです。

ありがとうございます!

答えて

1

Openは、(sql.Dbへのポインタ)を返します。また*sql.DBを返すために、関数のシグネチャを変更します。

func establish_db_connection() *sql.DB { 
+0

はありがとう、私はそれは、単純な何かを知っていました! – user2490003

関連する問題