Go可以有可选参数吗?还是可以只定义两个具有相同名称和不同数量参数的函数?
3 回答
慕无忌1623718
TA贡献1744条经验 获得超4个赞
Go没有可选参数,也不支持方法重载:
如果方法分派也不需要进行类型匹配,则可以简化方法分派。其他语言的经验告诉我们,使用具有相同名称但签名不同的多种方法有时会很有用,但在实践中也可能会造成混淆和脆弱。在Go的类型系统中,仅按名称进行匹配并要求类型一致是简化的主要决定。
慕运维8079593
TA贡献1876条经验 获得超5个赞
一种实现类似可选参数的好方法是使用可变参数。该函数实际上会接收您指定的任何类型的切片。
func foo(params ...int) {
fmt.Println(len(params))
}
func main() {
foo()
foo(1)
foo(1,2,3)
}
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
您可以使用包含以下参数的结构:
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 parameters
doIt(Params{a: 1, c: 9})
- 3 回答
- 0 关注
- 257 浏览
添加回答
举报
0/150
提交
取消