登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-04-30 07:36:30 468浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《为什么 Go 允许编译未使用的函数参数?》,这篇文章主要会讲到golang等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

来自 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](https://groups.google.com/forum/#!topic/golang- nuts/q09H61oxwWw)

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

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

正如该线程所指出的,有一个有效的参数只允许命名为_好像它们未使用的参数(例如),但由于Go 1 未来兼容性保证Distance(_,_ Node),此时为时已晚。如前所述,无论如何,可能的反对意见是参数,即使未使用,也可以隐式提供文档 ****

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

好了,本文到此结束,带大家了解了《为什么 Go 允许编译未使用的函数参数?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>