2017-08-01 60 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