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內部定義相關(未深究)