多个返回值是 Go 的最大错误吗?

主要观点:Go 语言的多返回值设计存在诸多问题,如与其他语言特性交互不佳、使语言更复杂、导致数据结构处理困难、影响并发和错误处理等,建议将其提升为完整的元组类型;同时探讨了 Go 语言在迭代器、错误处理等方面的不足及改进方向。
关键信息:

  • Go 常因各种原因被批评,如缺乏和类型相关的特性等,多返回值是其历史上最糟糕的决策之一。
  • 在 Go 中,多返回值并非真正的元组,需定义结构体来模拟,这给数据结构处理带来麻烦,并发时更需定义非标准包装类型。
  • Go 1.23 允许对函数进行迭代,但因无元组导致处理一或两个值的情况需重复定义 API,标准库也受此影响。
  • Go 的基于多返回值的错误处理存在问题,如易导致变量阴影、代码可编译但逻辑可能错误等,建议定义Result类型改进。
  • 改进多返回值相关问题存在困难,如解包的语法歧义、多返回值传递给可变参数函数的问题等,但并非不可能。
  • 多返回值进入 Go 语言的历史及可能的原因,早期内部讨论显示对某些特性的考虑。
    重要细节:
  • 举例说明 Go 中多返回值在不同场景下的使用及问题,如函数返回值处理、并发处理、错误处理等。
  • 提及 Go 语言在工具方面的成就及对其简单性的看法。
  • 提到创建邮件列表以获取后续内容。
阅读 7
0 条评论