小编典典

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

go

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

func main() {
    print(computron(3, -3));
}


func computron(param_a int, param_b int) int {
    return 3 * param_a;
}

阅读 686

收藏
2020-07-02

共1个答案

小编典典

没有正式的原因,但是在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保证,
此时已为时已晚。由于
提到,一个可能的反对意见反正是参数,即使不使用,可以隐提供的文档。

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

2020-07-02