GO 空指针和nil
package main
import (
"fmt"
"io"
"strings"
)
func main() {
r := f1(-1)
if r == nil {
fmt.Println("r error")
} else {
r.Read([]byte("")) // panic: runtime error: invalid memory address or nil pointer dereference
}
}
func f1(n int) io.Reader {
var r *strings.Reader = nil
if n > 0 {
r = &strings.Reader{}
}
return r
}
// 正确写法 应该返回 nil
func f2(n int) io.Reader {
if n > 0 {
return &strings.Reader{}
}
return nil
}

浙公网安备 33010602011771号