2016-05-09 9 views
1

Ich habe eine einfache golang Routine, die database/sql eine Verbindung zu meiner Postgres DB zu öffnen verwendet und hat einige SachenRückkehr beliebige Datentypen in 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 
    // ... 
    // ... 
} 

Ich habe Probleme mit der Signatur für die establish_db_connection Funktion Schreiben -

func establish_db_connection() sql.DB { 

Die documentation suggests es gibt eine sql.DB Instanz. Sollte das nicht der Rückgabetyp sein?

Ich bin super neu zu Golang, also nur zum größten Teil das erste Mal herauszufinden.

Danke!

Antwort

1

Open gibt einen *sql.DB, einen Zeiger auf eine sql.Db. Ändern Sie die Funktion Signatur auch eine *sql.DB zurück:

func establish_db_connection() *sql.DB { 
+0

Vielen Dank, ich wusste, es war etwas einfach! – user2490003