3 回答

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

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

TA貢獻1842條經驗 獲得超13個贊
您可以使用橢圓運算符來發送可選參數.. 不要在可選參數中傳遞任何內容并檢查參數的長度。它應該可以解決您的問題
func foo(params ...int) {
fmt.Println(len(params))
}
func main() {
foo()
foo(1)
foo(1,2,3)
}
- 3 回答
- 0 關注
- 290 瀏覽
添加回答
舉報