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内部定义相关(未深究)