目的
在新单位工作已经快1年,这边使用了go语言作为主要的开发语言。在这里记录在工作中使用该语言遇到的问题、心得,避免以后再踩坑。
各种例子
1、从一个map对象中根据key获取值。其中map的通用类型可以定义为:map[string]interface{}
前提条件存在一个上述类型的map定义
var m map[string]interface{} = make(map[string]interface{})
可以有两种方式来获取对象
(1). 方法一
value, ok := m[key]
(2). 方法二
value := m[key]
问题:value的类型为interface{},可以为值类型或指针类型,如果给定的key在map中不存在,对于不同value类型的结果会是怎样的?
(1). 如果是值类型,如果给定的key不存在,从map获取值后,value的值为
string类型,value为空串
数值类型,value为0
结构体类型,value为结构体的默认值,结构体中包含的每一种类型的值参考上述规则
(2). 如果是指针类型,如果给定的key不存在,从map获取值后,value的值为 nil
2、对于一个为nil的map的遍历是否会报错?
比如如下代码:
运行的结果是:
(1). 遍历不会抱错,也不会执行print操作
(2). len(m) 长度为0
结论:对一个nil对象的go语言的原生态操作,比如range, len 等都不会抱错
运行的结果是:
(1). 遍历不会抱错,也不会执行print操作
(2). len(m) 长度为0
结论:对一个nil对象的go语言的原生态操作,比如range, len 等都不会抱错
有疑问加站长微信联系(非本文作者)