我是Golang的初学者很抱歉如果我的问题很愚蠢:| 我创建了一个只访问Database(MongoDB)
的类package network
import (
"bytes"
"gopkg.in/mgo.v2"
)
type DatabaseConfig struct {
Host string `yaml:mongo_db_host`
Port string `yaml:mongo_db_port`
Name string `yaml:mongo_db_name`
Username string `yaml:mongo_db_user`
Password string `yaml:mongo_db_pass`
}
type Database struct {
Session *mgo.Session
Config DatabaseConfig
IsOpen bool
}
func (d Database) NewSession() error {
url := bytes.Buffer{}
url.WriteString("mongodb://")
if d.Config.Username != "" && d.Config.Password != "" {
url.WriteString(d.Config.Username)
url.WriteString(":")
url.WriteString(d.Config.Password)
url.WriteString("@")
}
if d.Config.Host != "" {
url.WriteString(d.Config.Host)
}
if d.Config.Port != "" {
url.WriteString(":")
url.WriteString(d.Config.Port)
}
if d.Config.Name != "" {
url.WriteString("/")
url.WriteString(d.Config.Name)
}
var err error
d.Session, err = mgo.Dial(url.String())
if err == nil {
d.IsOpen = true
}
return err
}
func (d Database) GetSession() *mgo.Session {
return d.Session
}
func (d Database) CloseSession() {
d.Session.Close()
d.IsOpen = false
}
func (d Database) GetConfig() DatabaseConfig {
return d.Config
}
func (d Database) SetConfig(config DatabaseConfig) {
d.Config = config
}
我创建了一个像这样的新数据库:
db_config := network.DatabaseConfig{
Host: "localhost",
Port: "27017",
Name: "meuporg",
}
db := network.Database{}
db.SetConfig(db_config)
err = db.NewSession()
log.Fatal(db.GetSession())
glbContainer.DB = db
每次构建并返回“nil”时,我都尝试在函数内部记录db.Session,这会返回正确的结构。
我认为我在使用指针做错了但是我看不出是什么。 你能帮我理解出了什么问题吗? 谢谢:))