Golang 如何检查指针或接口是否为nil

Golang 如何检查指针或接口是否为nil

在Golang中,nil检查在GoLang代码中经常出现,尤其是在错误检查中。在大多数情况下,nil检查是直截了当的,但在接口的情况下,它有点不同,需要特别注意。

在这里,任务是检查指针或接口是否为nil,在Golang中可以使用以下方法进行检查:

例1: 在此示例中,检查指针是否为nil指针。

// Go程序,演示如何检查指针是否为nil
package main
import (
    "fmt"
)
type Temp struct {
}
func main() {
    var pnt *Temp // 指针
    var x = "123"
    var pnt1 *string = &x;
    fmt.Printf("pnt is a nil pointer: %v\n", pnt == nil)
    fmt.Printf("pnt1 is a nil pointer: %v\n", pnt1 == nil)
}
Go

输出:

pnt is a nil pointer: true
pnt1 is a nil pointer: false
Go

例2: 在此示例中,检查接口是否为nil接口。

// Go程序,演示如何检查接口是否为nil
package main
import (
    "fmt"
)

// 创建一个接口
type tank interface {
    Tarea() float64
    Volume() float64
}

type myvalue struct {
    radius float64
    height float64
}

// 实现tank接口的方法
func (m myvalue) Tarea() float64 {

    return 2*m.radius*m.height +
        2*3.14*m.radius*m.radius
}

func (m myvalue) Volume() float64 {

    return 3.14 * m.radius * m.radius * m.height
}

func main() {

    var t tank
    fmt.Printf("t is a nil interface: %v\n", t == nil)

    t = myvalue{10, 14}

    fmt.Printf("t is a nil interface: %v\n", t == nil)

}
Go

输出:

t is a nil interface: true
t is a nil interface: false
Go

例3: 在此示例中,检查接口是否为具有nil指针的nil接口。

// Go程序,演示如何检查具有nil指针的接口是否为nil接口
package main
import (
    "fmt"
)
type Temp struct {
}
func main() {

    // 取一个指针
    var val *Temp

    // 取一个接口
    var val2 interface{}

    // val2是一个非nil接口,
    // 持有一个nil指针(val)
    val2 = val

    fmt.Printf("val2 is a nil interface: %v\n", val2 == nil)

    fmt.Printf("val2 is a interface holding a nil pointer: %v\n", val2 == (*Temp)(nil))
}
Go

输出:

val2 is a nil interface: false
val2 is a interface holding a nil pointer: true
Go

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册