nil in Golang
就像是有特定类型的
nullptr
可比较性点击此处
nil
与nil
不可比较- 不同类型的
nil
地址一样
类型为 nil 与 值为 nil
一个包含nil指针的接口不是nil接口
package site
import (
"bytes"
"io"
)
const debug = true
func main() {
var buf *bytes.Buffer
if debug {
buf = new(bytes.Buffer) // enable collection of output
}
f(buf) // NOTE: subtly incorrect!
if debug {
// ...use buf...
}
}
// If out is non-nil, output will be written to it.
func f(out io.Writer) {
// type of out : *bytes.Buffer
// value of out : nil
if out != nil {
out.Write([]byte("done!\n")) // panic here maybe
}
}
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
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
对于接口类型而言 包含了两个部分:类型 与 值