我开始在Go
工作。拥有以下代码
type Transaction struct{
Id string `bson:"_id,omitempty"`
TransId string
}
func GetTransactionID() (id interface{}, err error){
query := bson.M{}
transId, err := dbEngine.Find("transactionId", WalletDB, query)
//transId is []interface{} type
id, err1 := transId.(Transaction)
return transId, err
}
package dbEngine
func Find(collectionName,dbName string, query interface{})(result []interface{}, err error){
collection := session.DB(dbName).C(collectionName)
err = collection.Find(query).All(&result)
return result, err
}
Error:
无效的类型断言:transId。(string)(左边是非接口类型[]接口{}
有关将[]interface{}
更改为Transaction
类型的建议。
答案 0 :(得分:6)
您无法将一片interface{}
转换为任何单个结构。你确定你真的不想要一片Transaction
s(即[]Transaction
类型)吗?如果是这样,你必须循环并转换每一个:
for _, id := range transId {
id.(Transaction) // do something with this
}