在这个上敲我的头。我无法获得分配给结构的 HTTP 响应。我的结构设置如下:type DataConnect struct { Response *Response}type Response struct { response []byte errors []string}然后有问题的函数是这样布局的(为了可读性而修剪):137 func (d *DataConnect) send() bool { ...154 out, err := ioutil.ReadAll(resp.Body)155 if err != nil {156 fmt.Println(err)157 }158159 fmt.Printf("%s\n", out) // THIS WORKS160 d.Response.response = out // THIS DOES NOT WORK161 }这样做会导致以下错误:panic: runtime error: invalid memory address or nil pointer dereference[signal 0xb code=0x1 addr=0x0 pc=0x36532]goroutine 1 [running]:github.com/DataConnect.(*DataConnect).send(0xc2000af4a0, 0x232a00)github.com/DataConnect/DataConnect.go:160 +0xc22现在,如果我更改DataConnect.Response.response为 typeinterface{}我可以成功保存到它,但是我需要它,[]byte因为稍后我将对内容执行 json.Unmarshal 。有谁知道为什么这不起作用?
2 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
我怀疑@alex 是正确的,将您的代码更改为查找 nil 的内容(来自第 159 行):
fmt.Printf("%s\n", out) // THIS WORKS
if d != nil && d.Response != nil {
d.Response.response = out // THIS DOES NOT WORK
} else {
// appropriate error logging and handling
}
- 2 回答
- 0 关注
- 311 浏览
添加回答
举报
0/150
提交
取消