7
不懂就问, go 不是没有运算符重载吗,为什么 map 可以通过下标访问,数组比较可以用=...
source link: https://www.v2ex.com/t/818542
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
m:=make(map[int]int)
m[0]=0 //map 可以通过下标访问元素
a:=[]int{1,2,3}
b:=[]int{1,2,3}
fmt.Print(a==b) //true
13 条回复 • 2021-11-28 19:55:21 +08:00
SuperMild 2 小时 39 分钟前
invalid operation: a == b (slice can only be compared to nil)
数组可以 ==,slice 不行。
数组可以 ==,slice 不行。
luguhu 2 小时 16 分钟前
@jackiejkl go 的数组在做比较的时候对比的不是指针而是值吧. 可以尝试用 unsafe.Pointer 获取地址再对比, 获取到的两个地址应该是不一样的
neoblackcap 2 小时 1 分钟前
运算符重载的例子你都举得不对,map 等内置数据结构当然可以用下标比较。因为这是语言规定的一部分。要举例子啊,你应该举 make ,毕竟它可以接受数量不一样的参数。你试试看能不能模仿
jackiejkl 1 小时 54 分钟前
@neoblackcap 不明白这和 make 有什么关系 另外是因为我觉得除了 int 这种基本类型 map 应该是类 应该用 map.getValue(Key)来取得值 (似乎暴露了什么
ClarkAbe 13 分钟前
map 你不用这种方式的话你就只有 range 才能获取了........map 没有函数封装也不是 struct,为什么不能这样访问.......建议看完圣经.....
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK