在 Go 中是否可以像在 Python 中那样将数组解包为多个变量。
例如
var arr [4]string = [4]string {"X", "Y", "Z", "W"}
x, y, z, w := arr
我发现这在 Go 中不受支持。我可以做些什么来避免编写 x,y,z,w=arr[0],arr[1],arr[2],arr[3]
此外,是否有可能支持类似的东西
var arr []string = [4]string {"X", "Y", "Z", "W"}
x, y, z, w := arr
请注意,它现在是一个 slice 而不是数组,因此编译器将隐式检查是否 len(arr)==4 并在不是时报告错误。
最佳答案
如您所见,Go 不支持此类结构。 IMO,他们永远不可能。 Go 设计师出于充分的理由更喜欢正交性。例如,考虑作业:
- LHS 类型与 RHS 类型匹配(在第一个近似值中)。
- LHS 中“home”的数量与 RHS 中“sources”(表达式)的数量相匹配。
Python 不重视这些原则的方式可能在某些地方有点实用。但是,当语言遵循简单、规则的模式时,阅读大型代码库时的认知负担会降低。
关于go - 数组或 slice 的多重赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17934611/