使用继承的结构时golang类型不匹配
传递mongoConfig时在最后一行中获取错误。我使用DialInfo类型创建了MongoDBConfig的结构类型 无法将mongoConfig(类型*MongoDBConfig)用作类型*DialInfo使用继承的结构时golang类型不匹配,go,mgo,Go,Mgo,传递mongoConfig时在最后一行中获取错误。我使用DialInfo类型创建了MongoDBConfig的结构类型 无法将mongoConfig(类型*MongoDBConfig)用作类型*DialInfo 显式访问嵌入字段: type MongoDBConfig struct { *mgo.DialInfo } func ConfigureMongoDB() (*MongoDBConfig, error) { //Get gopath GOPATH :=
显式访问嵌入字段:
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)
}
不需要转换,只需通过
mgo.DialWithInfo(mongoConfig.DialInfo)
@Vadyus调用嵌入结构即可。您无法将嵌入类型MongoDBConfig
转换为嵌入类型mgo.DialInfo
。你的代码示例甚至无法编译。在Go中,你不能继承经典OOP的东西。你有一个嵌入式类型。我之前错过了这个。谢谢。
session, mongoerr := mgo.DialWithInfo(mongoConfig.DialInfo)