map的这两种写法是什么原理 ?

Jackword 2016-07-04 12:28:05
1个返回值:
x := map["key"]

2个返回值:
x, ok := map["key"]

为毛既可以返回1个值,也可以返回2个值的?
...全文
1226 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2016-08-01
  • 打赏
  • 举报
回复
var m map[Tk]Tv
在执行 m[k] 时,可以用一个Tv类型的变量来接收,也可以用一个Tv、一个bool来接收。 第一种方法:如果m中没有以k为key的偶对,就返回Tv的零值,如此一来,你就分不出是“存在k且对应的值为零”还是“不存在k”了; 第二种方法:如果m中没有以k为key的偶对,就返回Tv的零值和false
李察德-泰森 2016-07-04
  • 打赏
  • 举报
回复
我去,居然是go语言,习惯性的当python了
李察德-泰森 2016-07-04
  • 打赏
  • 举报
回复
这个看你的返回值。

>>> a = {'a':[1,2],'b':[3,4],'c':[5,6]}
>>> b = a['a']
>>> b
[1, 2]
>>> b, c = a['a']
>>> b
1
>>> c
2
>>> 

>>> a = {'a':1,'b':2,'c':3}
>>> b = a['a']
>>> b
1
>>> b, ok = a['a']
Traceback (most recent call last):
  File "<interactive input>", line 1, in <module>
TypeError: 'int' object is not iterable
Jackword 2016-07-04
  • 打赏
  • 举报
回复
有点冷啊

2,190

社区成员

发帖
与我相关
我的任务
社区描述
go语言学习与交流版
社区管理员
  • go语言社区
  • Freeman Z
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧