分享
go语言学习心得
lingyun1981 · · 2225 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
目的
在新单位工作已经快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 等都不会抱错
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2225 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
目的
在新单位工作已经快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 等都不会抱错