Go 对未使用函数参数的容忍度:设计问题
与 C 不同,Go 禁止编译包含未使用变量的程序。然而,它提出了关于允许未使用的函数参数的问题。让我们深入研究一下这种明显不一致背后的原因。
最初,Go 允许编译具有未使用参数的函数似乎违反直觉。然而,该语言的设计者做出这个决定有特定的动机。根据 Go 社区内的讨论,它源于未使用的变量和未使用的函数参数之间的根本区别。
虽然未使用的变量通常被认为是编程错误,但通常的做法是使用并不总是使用的参数来声明函数。在这种情况下,使用下划线 (_) 未命名参数可能会导致混乱,特别是对于不使用任何参数的函数,如 func foo(_, _ int).
未使用的参数名称作为重要的文档,为该功能提供额外的背景和意图。这在实现接口时变得尤为重要。例如,在图上运行的函数在计算跨边距离时可能不需要考虑节点,如示例 func (graph *MyGraph) Distance(node1, node2 Node) int {...}.
所示由于 Go 语言的未来兼容性保证,在未使用时禁止名为 _ 的参数的另一种可能的解决方案最终被驳回。此外,即使未使用的参数也可以提供隐式文档,支持代码的可发现性和可读性。
本质上,允许未使用的函数参数的决定是由文档、常见编程实践和一致性等因素驱动的设计选择与语言的其他方面。虽然可能没有单一、明确的原因,但这一选择背后的基本原理强调了塑造 Go 设计理念的细致入微的思维过程。
以上是为什么Go允许未使用的函数参数而禁止未使用的变量?的详细内容。更多信息请关注PHP中文网其他相关文章!