为了账号安全,请及时绑定邮箱和手机立即绑定

来自数组或切片的多重赋值

来自数组或切片的多重赋值

Go
慕桂英4014372 2021-06-14 17:23:03
在 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 不重视这些原则的方式可能在这里和那里都有些实用。但是当语言遵循简单的规则模式时,阅读大型代码库时的认知负担会降低。


查看完整回答
反对 回复 2021-06-21
  • 2 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信