dongpo2458 2013-09-11 22:46
浏览 119
已采纳

解决无效的内存地址或nil指针取消引用

Banging my head on this one. I can't get an HTTP Response to assign to a struct.

I have my structs set up like so:

type DataConnect struct {
    Response *Response
}

type Response struct {
    response []byte
    errors   []string
}

Then the function in question is laid out like so (trimmed for readability):

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
", out) // THIS WORKS
160    d.Response.response = out // THIS DOES NOT WORK
161 }

Doing that results in the following error:

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

Now if I change DataConnect.Response.response to type interface{} I can save successfully to it, however I need it in []byte as later I will be doing a json.Unmarshal on the content.

Does anybody have any idea why this isn't working?

  • 写回答

2条回答 默认 最新

  • dongzai5181 2013-09-11 23:46
    关注

    I suspect either d is nil or d.Response is nil on line 160. If that is true, you need to decide if that is appropriate and change your code if it is not.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 找回 股票行情系统的资源问题
  • ¥15 gwas 分析-plink 检查人口分层出现下面问题
  • ¥15 关于#matlab#的问题:需要 MATLAB 运行程序,对比四个多址通信方式(TDMA,FDMA,CDMA,OFDMA)的抗噪声性能
  • ¥15 有没有复现过PFENet的,如何解决?
  • ¥15 vue3使用swiper轮播图循环失败
  • ¥15 FDMA,OFDMA,TDMA 和 CDMA 系统容量对比仿真
  • ¥15 图神经网络的入侵检测
  • ¥15 工业数据采集技术+存储架构推荐
  • ¥15 GPT-SOVITS如何训练少数民族语言支持合成语音
  • ¥20 树莓派4b使用Camera Module 3时出现the system should be configured for the legacy camera stack问题