在 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请注意,它现在是一个切片而不是数组,因此编译器将隐式检查 len(arr)==4 并报告错误。
2 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
正如您正确理解的那样,Go 不支持此类构造。IMO,他们永远不可能。Go 设计者更喜欢正交性是有充分理由的。例如,考虑分配:
LHS 类型匹配 RHS 类型(在第一个近似值中)。
LHS 中“家”的数量与 RHS 中“来源”(表达式)的数量相匹配。
Python 不重视这些原则的方式可能在这里和那里都有些实用。但是当语言遵循简单的规则模式时,阅读大型代码库时的认知负担会降低。
- 2 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消