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条经验 获得超12个赞
您可以使用椭圆运算符来发送可选参数.. 不要在可选参数中传递任何内容并检查参数的长度。它应该可以解决您的问题
func foo(params ...int) {
fmt.Println(len(params))
}
func main() {
foo()
foo(1)
foo(1,2,3)
}
- 3 回答
- 0 关注
- 242 浏览
添加回答
举报