Go中的可选参数?

Go可以有可选参数吗?还是可以只定义两个具有相同名称和不同数量参数的函数?


慕沐林林
浏览 258回答 3
3回答

慕无忌1623718

Go没有可选参数,也不支持方法重载:如果方法分派也不需要进行类型匹配,则可以简化方法分派。其他语言的经验告诉我们,使用具有相同名称但签名不同的多种方法有时会很有用,但在实践中也可能会造成混淆和脆弱。在Go的类型系统中,仅按名称进行匹配并要求类型一致是简化的主要决定。

慕运维8079593

一种实现类似可选参数的好方法是使用可变参数。该函数实际上会接收您指定的任何类型的切片。func foo(params ...int) {    fmt.Println(len(params))}func main() {    foo()    foo(1)    foo(1,2,3)}

一只萌萌小番薯

您可以使用包含以下参数的结构:type Params struct {  a, b, c int}func doIt(p Params) int {  return p.a + p.b + p.c }// you can call it without specifying all parametersdoIt(Params{a: 1, c: 9})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go