提供潜在的 nil 变量以在 GOLANG 中运行

Tom*_*Tom -2 go

我想调用一个带有 int 变量的函数,该变量可以有一个值,也可以为 nil。在主函数中,我正在执行此调用。

doDomething(10) // does not work?
doDomething(nil) // works

func doSomething(parent_id *int) {
    fmt.Print(parent_id)
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

不能在 doSomething 的参数中使用 (type int) 作为类型 *int

我使用 *int 指针,因此 nil 有效,但如果它是一个值则无效。然后我发现类型不匹配。

aur*_*iar 8

doSomething期待一个*int参数。10 是 type int,所以这是他的错误来源。

这是一个有效的用法:

 i := 10
 doDomething(&i)
Run Code Online (Sandbox Code Playgroud)

这是doSomething应该的样子:

func doSomething(parent_id *int) {
    if parent_id == nil{
        //nil
        fmt.Println("nil")
        return
    } 
    //valid int 
    fmt.Printf("%d", *parent_id)
}
Run Code Online (Sandbox Code Playgroud)