1 前言
類型轉換,可以用斷言(只能使用在interface{}類型轉換成其它類型)和顯式類型強制轉換(常規是用於基本類型)
2 代碼
//graphql-go
func(params graphql.ResolveParams) (interface{}, error) {
//斷言使用在interface{}轉換,Args定義是map[string]interface{}
id, _ := params.Args["id"].(int)
name, nameOk := params.Args["name"].(string)
info, infoOk := params.Args["info"].(string)
price, priceOk := params.Args["price"].(float64)
product := Product{}
for i, p := range products {
//顯式類型轉換
if int64(id) == p.ID {
if nameOk {
products[i].Name = name
}
if infoOk {
products[i].Info = info
}
if priceOk {
products[i].Price = price
}
product = products[i]
break
}
}
return product, nil
},
以下是本文無關說明,僅用來記錄。
id, _ := params.Args["id"].(int), if int64(id) == p.ID 如果寫成 id, _ := params.Args["id"].(int64), if id == p.ID 會出現刪除id:1時,顯示刪除id是0,無法真正刪除,原因是graphql內部定義相關(未深究)
