来自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)//这应该做什么? 这些名称(即使未使用)也提供了重要的文档。 安德鲁
未使用的变量始终是编程错误,而编写不使用其所有参数的函数是很常见的。
可以将这些参数保留为未命名(使用_),但这可能会与诸如
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保证,此时已为时已晚。由于 还 提到,一个可能的反对意见反正是参数,即使不使用,可以隐提供的文档。
_
Distance(_,_ Node)
简而言之:没有具体的具体答案,除了他们只是做出了最终的任意决定(但仍然受过教育),确定未使用的参数比未使用的局部变量和导入更重要和有用。如果曾经有很强的设计原因,那么任何地方都不会记录在案。