题目来源:字节跳动
答案:小禾先生
给了一段go的代码 让你判断输出(涉及 结构体和接口之间的比较)
package main
import "fmt"
type A struct {
}
func (this *A) Do() {
}
type AI interface {
Do()
}
func main() {
var i AI
var a *A
if i == nil {
fmt.Println("i == nil #1")
}
i = nil
if i == nil {
fmt.Println("i == nil #2")
}
a = nil
i = a
if i == nil {
fmt.Println("i == nil #3")
}
}
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
28
29
30
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
28
29
30
输出结果
i == nil #1
i == nil #2
1
2
2