3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
Go 沒有“可選”參數(shù)作為其他語(yǔ)言中普遍理解的概念;nil
只是接口的零值(io.Reader
在這種情況下)。
字符串的等效零值是一個(gè)空字符串:
getChallenges("")
如果要接受 0 個(gè)或多個(gè)相同的參數(shù)類型,請(qǐng)使用可變參數(shù)語(yǔ)法:
func getChallenges(after ...string) ([]challenge, string, error)

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以修改函數(shù)以接收指針值,如下所示:
func getChallenges(after *string) ([]challenge, string, error)
然后您可以將其nil作為參數(shù)傳遞給它。但是不要忘了檢查after的nil取消引用它之前你的函數(shù)的內(nèi)在價(jià)值,或者你會(huì)得到一個(gè)零指針異常:
func getChallenges(after *string) ([]challenge, string, error) {
if after == nil {
// No value specified
} else {
fmt.Printf("After: %s\n", *after) // Note pointer dereferencing with "*"
}
// ...
}
另外一個(gè)選項(xiàng):
只需使用兩個(gè)函數(shù):
func getChallenges(after string) {}
func getAllChallenges() {
return getChallenges(/* some default value here */)
}

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
您可以使用橢圓運(yùn)算符來發(fā)送可選參數(shù).. 不要在可選參數(shù)中傳遞任何內(nèi)容并檢查參數(shù)的長(zhǎng)度。它應(yīng)該可以解決您的問題
func foo(params ...int) {
fmt.Println(len(params))
}
func main() {
foo()
foo(1)
foo(1,2,3)
}
- 3 回答
- 0 關(guān)注
- 288 瀏覽
添加回答
舉報(bào)