Mil*_*les 12 variables parameters compilation go
Go来自C的一个比较值得注意的方面是,如果在其中声明了未使用的变量,编译器将不会构建您的程序.那么,如果在函数中声明了未使用的参数,那么为什么要构建这个程序呢?
func main() {
print(computron(3, -3));
}
func computron(param_a int, param_b int) int {
return 3 * param_a;
}
Run Code Online (Sandbox Code Playgroud)
Lin*_*ope 23
没有正式的理由,但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
}
Run Code Online (Sandbox Code Playgroud)
正如该线程所指出的那样,有一个有效的参数只允许参数命名,_如果它们未被使用(例如Distance(_,_ Node)),但此时由于Go 1的未来兼容性保证已经太晚了.由于还提到,一个可能的反对意见反正是参数,即使不使用,可以隐提供的文档.
简而言之:没有具体的,具体的答案,除了他们只是最终任意(但仍然受过教育)确定未使用的参数比未使用的局部变量和导入更重要和有用.如果曾经有一个强大的设计理由,那么任何地方都没有记录.