Comment utiliser le var tous les fichiers dans un paquet?

Je avoir la structure suivante:

modèles/db.aller

type DB struct {
    *sql.DB
}

var db *DB

func init() {
    dbinfo := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable",
        DB_USER, DB_PASSWORD, DB_NAME)

    db, err := NewDB(dbinfo)
    checkErr(err)

    rows, err := db.Query("SELECT * FROM profile")
    checkErr(err)

    fmt.Println(rows)
}

func NewDB(dataSourceName string) (*DB, error) {
    db, err := sql.Open("postgres", dataSourceName)
    if err != nil {
        return nil, err
    }
    if err = db.Ping(); err != nil {
        return nil, err
    }
    return &DB{db}, nil
}

modèles/db_util.aller

func (p *Profile) InsertProfile() {
    if db != nil {
        _, err := db.Exec(...)
        checkErr(err)
    } else {
        fmt.Println("DB object is NULL")
    }
}

Lorsque j'essaie d'accéder à db dans InsertProfile fonction, il est dit NULL ptr exception. Comment puis-je accéder à la db dans db_utils.go?

Je ne voudrais pas tirer profit db (car il permettrait de donner accès à tous les paquets).

Je reçois la REQUÊTE a retourné à partir de la db dans init() correctement.

InformationsquelleAutor lionelmessi | 2015-12-10