此时v就是一个nil。在底层存储上,它是一个空指针。
与之不同的情况
var obj *T
var v interface{}
v = obj
此时v是一个interface,它的值是nil,也就是说其data域为空,但它自身不为nil。
下面来看个例子就明白了:
Go语言中的error类型实际上是抽象了Error()方法的error接口:
type error interface {
Error() string
}
有如下代码:
type Error struct {
errCode uint8
}
func (e *Error) Error() string {
switch e.errCode {
default:
return "unknown error"
}
}
func test_checkError() {
var e *Error
if e == nil {
fmt.Println("e is nil")
} else {
fmt.Println("e is not nil")
}
var err error
err = e
if err == nil {
fmt.Println("err is nil")
} else {
fmt.Println("err is not nil")
}
}
运行test_checkError()输出:
e is nil
err is not nil
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。









