zoukankan      html  css  js  c++  java
  • Golang 类型转换,断言和显式强制转换

    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内部定义相关(未深究)
  • 相关阅读:
    HTTP状态码汇总
    树遍历以及图遍历的方法
    HashMap之扩容机制
    MySQL常见的七种锁
    双亲委派机制及作用
    Java进程故障排查思路及步骤
    八大数据结构
    常见的十种排序算法
    使用TortoiseGit操作分支的创建与合并
    Storage Port Drivers
  • 原文地址:https://www.cnblogs.com/fanbi/p/10081478.html
Copyright © 2011-2022 走看看