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 關注
- 280 瀏覽
添加回答
舉報
0/150
提交
取消