英文:
golang type mismatch when using inherited struct
问题
type MongoDBConfig struct {
*mgo.DialInfo
}
func ConfigureMongoDB() (*MongoDBConfig, error) {
// 获取 GOPATH
GOPATH := os.Getenv("GOPATH")
file, err := os.Open(GOPATH + RESOURCE_PATH)
if err != nil {
return nil, err
}
decoder := json.NewDecoder(file)
mongoConfig := MongoDBConfig{}
er := decoder.Decode(&mongoConfig)
if er != nil {
return nil, er
}
return &mongoConfig, nil
}
func InitMongoDB() (*Session, error) {
mongoConfig, err := ConfigureMongoDB()
if err != nil {
return nil, err
}
session, mongoerr := mgo.DialWithInfo(mongoConfig)
}
在最后一行传递 mongoConfig 时出现错误。我使用 DialInfo 类型创建了 MongoDBConfig 的结构类型。
无法将 mongoConfig(类型为 *MongoDBConfig)用作 *DialInfo 类型。
英文:
type MongoDBConfig struct {
*mgo.DialInfo
}
func ConfigureMongoDB() (*MongoDBConfig, error) {
//Get gopath
GOPATH := os.Getenv("GOPATH")
file, err := os.Open(GOPATH+RESOURCE_PATH)
if err != nil {
return nil, err
}
decoder := json.NewDecoder(file)
mongoConfig := MongoDBConfig{}
er := decoder.Decode(&mongoConfig)
if er != nil {
return nil, er
}
return &mongoConfig, nil
}
func InitMongoDB() (*Session, error){
mongoConfig, err := ConfigureMongoDB()
if err != nil {
return nil, err
}
session, mongoerr := mgo.DialWithInfo(mongoConfig)
}
Getting error in the last line while passing mongoConfig. I created the struct type of MongoDBConfig using DialInfo type.
> Cannot use mongoConfig (type * MongoDBConfig) as type *DialInfo
答案1
得分: -1
显式访问嵌入字段:
session, mongoerr := mgo.DialWithInfo(mongoConfig.DialInfo)
英文:
Access embeded field explicitly:
session, mongoerr := mgo.DialWithInfo(mongoConfig.DialInfo)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论