go语言学习心得

lingyun1981 · · 1737 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

目的

在新单位工作已经快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 等都不会抱错



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:lingyun1981

查看原文:go语言学习心得

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1737 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传