dongqinta4174 2018-08-20 10:32
浏览 148
已采纳

golang json中的指针解组

I'm trying to unmarshal a web service response using the below command and it works fine.

bodyBytes, _ := ioutil.ReadAll(response.Body)
bodyString := string(bodyBytes)
err = json.Unmarshal([]byte(bodyString), &output)
fmt.Println(&output)

When I use the pointer variable '&output' it works fine ie; the outputs are displayed properly.

but when I try to use the variable directly without &(ampersand), the outputs do not look good.

bodyBytes, _ := ioutil.ReadAll(response.Body)
bodyString := string(bodyBytes)
err = json.Unmarshal([]byte(bodyString), output)
fmt.Println(output)

What is the difference between these 2 variable - pointer vs normal variable while unmarshalling?

var output core.ApiData

The output is a type struct to match the apidata output.

  • 写回答

2条回答 默认 最新

  • du4010 2018-08-20 10:36
    关注

    It is because the Unmarshal function takes the output struct and populates it with the data. If you do not pass a pointer, it will take a copy of your struct and fill it, after which you don't have access to it any more. If you pass a pointer, the output struct behind the pointer will be populated and remain available.

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

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部