为什么Go允许编译未使用的函数参数?

来自C语言的Go语言最值得注意的方面之一是,如果在其中声明了一个未使用的变量,编译器将不会编译您的程序。那么,如果在函数中声明了一个未使用的参数,那么为什么要构建此程序呢?

func main() {

print(computron(3, -3));

}

func computron(param_a int, param_b int) int {

return 3 * param_a;

}

回答:

没有正式的原因,但是在golang-nuts上给出的原因是:

未使用的变量始终是编程错误,而编写不使用其所有参数的函数是很常见的。

可以将这些参数保留为未命名(使用_),但这可能会与诸如

func foo( string, int)//这应该做什么?

这些名称(即使未使用)也提供了重要的文档。

安德鲁

https://groups.google.com/forum/#!topic/golang-

nuts/q09H61oxwWw

有时拥有未使用的参数对于满足接口很重要,一个示例可能是在加权图上运行的函数。如果要实现所有边上成本均一的图,则考虑节点是没有用的:

func (graph *MyGraph) Distance(node1,node2 Node) int {

return 1

}

正如该线程所指出的那样,有一个有效的参数仅允许将名称命名为_未使用的参数(例如Distance(_,_ Node)),但由于Go 1

future-compatibility保证,此时已为时已晚。由于

提到,一个可能的反对意见反正是参数,即使不使用,可以隐提供的文档。

简而言之:没有具体的具体答案,除了他们只是做出了最终的任意决定(但仍然受过教育),确定未使用的参数比未使用的局部变量和导入更重要和有用。如果曾经有很强的设计原因,那么任何地方都不会记录在案。

以上是 为什么Go允许编译未使用的函数参数? 的全部内容, 来源链接: utcz.com/qa/420779.html

回到顶部