把我的头撞到这个上。我无法获得分配给结构的 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 }
158
159 fmt.Printf("%s\n", out) // THIS WORKS
160 d.Response.response = out // THIS DOES NOT WORK
161 }
这样做会导致以下错误:
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
为类型interface{}
,我可以成功保存到它,但是我需要它,[]byte
因为稍后我将对内容执行 json.Unmarshal。
有谁知道为什么这不起作用?