2 回答
TA贡献1784条经验 获得超7个赞
Go 中的数组类型(与切片不同)是可比较的,因此它没有什么神奇之处:您可以像任何其他地图一样定义它:map[KeyType]ValueTypewhere KeyTypewill be[3]int和ValueTypewill be string。
该比较操作符==和=必须为键类型的操作数被完全定义!; 因此键类型不能是函数、映射或切片。
m := map[[3]int]string{}
m[[3]int{1, 2, 3}] = "First quarter"
m[[3]int{4, 5, 6}] = "Second quarter"
m[[3]int{7, 8, 9}] = "Third quarter"
m[[3]int{10, 11, 12}] = "Fourth quarter"
fmt.Println(m)
输出:
map[[1 2 3]:First quarter [4 5 6]:Second quarter
[7 8 9]:Third quarter [10 11 12]:Fourth quarter]
在Go Playground上试一试。
要查询元素:
fmt.Println(m[[3]int{1, 2, 3}]) // Prints "First quarter"
您还可以一步创建地图:
m := map[[3]int]string{
[3]int{1, 2, 3}: "First quarter",
[3]int{4, 5, 6}: "Second quarter",
[3]int{7, 8, 9}: "Third quarter",
[3]int{10, 11, 12}: "Fourth quarter",
}
TA贡献1829条经验 获得超7个赞
需要注意的是,array
在 ruby 和array
go 中是不同的数据结构。Go 数组是不可变的,而 rubyarray
是。Goslice
是与 ruby 更相似的数据结构array
。但是,slices
正如 icza 的回答中指出的那样,您不能在 go 中使用as 键。
所以要回答你的问题:
在 Golang 中看起来如何?
这是不可能的,你不能有一个映射dynamic arrays
到strings
go的字典。但是,您可以转换slices
为arrays
并将它们用作键,正如 icza 所解释的那样。
- 2 回答
- 0 关注
- 173 浏览
添加回答
举报