只有 tab 和 data 都为 nil 时,接⼝才等于 nil
package main
import (
"fmt"
"reflect"
"unsafe"
)
func main() {
var a interface{} = nil
var b interface{} = (*int)(nil)
type iface struct {
itab, data uintptr
}
ia := *(*iface)(unsafe.Pointer(&a))
ib := *(*iface)(unsafe.Pointer(&b))
fmt.Println(a == nil, ia)
fmt.Println(b == nil, ib, reflect.ValueOf(b).IsNil())
}