为了账号安全,请及时绑定邮箱和手机立即绑定

Go中的可选参数?

Go中的可选参数?

Go
慕沐林林 2021-04-06 13:15:12
Go可以有可选参数吗?还是可以只定义两个具有相同名称和不同数量参数的函数?
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

Go没有可选参数,也不支持方法重载:

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


查看完整回答
反对 回复 2021-04-26
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

一种实现类似可选参数的好方法是使用可变参数。该函数实际上会接收您指定的任何类型的切片。


func foo(params ...int) {

    fmt.Println(len(params))

}


func main() {

    foo()

    foo(1)

    foo(1,2,3)

}


查看完整回答
反对 回复 2021-04-26
?
一只萌萌小番薯

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})


查看完整回答
反对 回复 2021-04-26
  • 3 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信