【发布时间】:2011-01-03 04:19:28
【问题描述】:
Go 可以有可选参数吗?或者我可以只定义两个具有相同名称和不同数量参数的函数吗?
【问题讨论】:
-
相关:这是在使用可变参数作为可选参数时强制强制参数的方法:Is it possible to trigger compile time error with custom library in golang?
-
Google 做出了一个糟糕的决定,因为有时一个函数有 90% 的用例,然后是 10% 的用例。可选的 arg 用于 10% 的用例。合理的默认值意味着更少的代码,更少的代码意味着更高的可维护性。
-
我认为没有可选参数是一个不错的决定。我已经看到可选参数在 C++ 中被严重滥用——40 多个参数。计算参数并确保指定正确的参数非常容易出错,尤其是在没有命名参数的情况下。使用@deamon 提到的结构要好得多。
-
@Jonathan 有几种方法可以解决这个问题。一种方法是传递一个带有函数所有参数的结构。这将具有具有命名参数(比位置参数更清晰)的额外好处,并且所有未提供的参数都有其默认值。当然只是创建一个包装函数,它将默认值传递给完整的函数。例如查询和QueryWithContext
-
@Jonathan 它似乎在 VS Code、Visual Studio、IntelliJ、atom 或 sublime 中无法开箱即用。您指的是什么 IDE,或者是否有提供此功能的扩展/设置?
标签: go overloading