dongqinta4174 2018-08-20 18: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 18: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条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里