提供潜在的nil变量以在GOLANG中运行
我想调用一个带有 int 变量的函数,该变量可以有一个值,也可以为 nil。在主函数中,我正在执行此调用。
doDomething(10) // does not work?
doDomething(nil) // works
func doSomething(parent_id *int) {
fmt.Print(parent_id)
}
我收到以下错误:
不能在 doSomething 的参数中使用 (type int) 作为类型 *int
我使用 *int 指针,因此 nil 有效,但如果它是一个值则无效。然后我发现类型不匹配。
回答
doSomething期待一个*int参数。10 是 type int,所以这是他的错误来源。
这是一个有效的用法:
i := 10
doDomething(&i)
这是doSomething应该的样子:
func doSomething(parent_id *int) {
if parent_id == nil{
//nil
fmt.Println("nil")
return
}
//valid int
fmt.Printf("%d", *parent_id)
}