如何将[] interface {}转换为自定义类型 - Go lang?

时间:2014-04-30 11:41:27

标签: go

我开始在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类型的建议。

1 个答案:

答案 0 :(得分:6)

您无法将一片interface{}转换为任何单个结构。你确定你真的不想要一片Transaction s(即[]Transaction类型)吗?如果是这样,你必须循环并转换每一个:

for _, id := range transId {
    id.(Transaction) // do something with this
}