如果你创建一个 type 变量bytes.Buffer
(没有初始化)并将它赋给一个 type 字段io.Reader
,那么在检查io.Reader
nil 之后会出现错误:invalid memory address or nil pointer dereference
。如何正确检查以避免此类错误?
package main
import (
"bytes"
"io"
"io/ioutil"
)
type Request struct {
Body io.Reader
}
func main() {
var data *bytes.Buffer
request := &Request{
Body: data,
}
if request.Body != nil {
ioutil.ReadAll(request.Body) // panic: runtime error: invalid memory address or nil pointer dereference
}
}
GCT1015
相关分类