2017-08-01 95 views
0
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) 

} 

在传递mongoConfig时在最后一行出现错误。我使用DialInfo类型创建了MongoDBConfig的结构类型。使用继承的结构时,golang类型不匹配

无法使用mongoConfig(类型* MongoDBConfig)类型* DialInfo

+2

在去你能不能** **继承的东西一拉经典OOP。你有什么是**嵌入**类型。 https://golang.org/doc/effective_go.html#embedding – mkopriva

+0

我之前错过了这个。谢谢。 – Shwetanka

回答

-1

访问嵌入式领域明确:

session, mongoerr := mgo.DialWithInfo(mongoConfig.DialInfo) 
+1

不需要转换,只需通过'mgo.DialWithInfo(mongoConfig.DialInfo)' – putu

+1

@Vadyus调用嵌入式结构,就不能将嵌入类型'MongoDBConfig'转换为嵌入类型'mgo.DialInfo'。你的代码示例甚至不会编译。 – mkopriva