Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用继承的结构时golang类型不匹配_Go_Mgo - Fatal编程技术网

使用继承的结构时golang类型不匹配

使用继承的结构时golang类型不匹配,go,mgo,Go,Mgo,传递mongoConfig时在最后一行中获取错误。我使用DialInfo类型创建了MongoDBConfig的结构类型 无法将mongoConfig(类型*MongoDBConfig)用作类型*DialInfo 显式访问嵌入字段: type MongoDBConfig struct { *mgo.DialInfo } func ConfigureMongoDB() (*MongoDBConfig, error) { //Get gopath GOPATH :=

传递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)

}

不需要转换,只需通过
mgo.DialWithInfo(mongoConfig.DialInfo)
@Vadyus调用嵌入结构即可。您无法将嵌入类型
MongoDBConfig
转换为嵌入类型
mgo.DialInfo
。你的代码示例甚至无法编译。在Go中,你不能继承经典OOP的东西。你有一个嵌入式类型。我之前错过了这个。谢谢。
 session, mongoerr := mgo.DialWithInfo(mongoConfig.DialInfo)