1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| package main
import "fmt"
type MyInterface interface {
Method()
}
type MyStruct struct {
data int
}
func (m *MyStruct) Method() {
fmt.Println("Method called")
}
func main() {
var i1 MyInterface
fmt.Printf("i1: 动态类型=%T, 动态值=%v, i1==nil=%v\n", i1, i1, i1 == nil) // i1: 动态类型=<nil>, 动态值=<nil>, i1==nil=true
var i2 MyInterface = (*MyStruct)(nil)
fmt.Printf("i2: 动态类型=%T, 动态值=%v, i2==nil=%v\n", i2, i2, i2 == nil) // i2: 动态类型=*main.MyStruct, 动态值=<nil>, i2==nil=false
i3 := &MyStruct{data: 42}
var i4 MyInterface = i3
fmt.Printf("i4: 动态类型=%T, 动态值=%v, i4==nil=%v\n", i4, i4, i4 == nil) // i4: 动态类型=*main.MyStruct, 动态值=&{42}, i4==nil=false
}
|