我正在尝试使用以下命令解组Web服务响应,并且工作正常。
bodyBytes, _ := ioutil.ReadAll(response.Body)
bodyString := string(bodyBytes)
err = json.Unmarshal([]byte(bodyString), &output)
fmt.Println(&output)
当我使用指针变量'&output'时,它可以正常工作,即;输出正确显示。
但是,当我尝试直接使用不带&(&)的变量时,输出看起来并不理想。
bodyBytes, _ := ioutil.ReadAll(response.Body)
bodyString := string(bodyBytes)
err = json.Unmarshal([]byte(bodyString), output)
fmt.Println(output)
解组时这两个变量-指针与普通变量之间有什么区别?
var output core.ApiData
输出是与apidata输出匹配的类型结构。
这是因为该Unmarshal
函数采用该output
结构,并使用数据填充该结构。如果您不传递指针,它将获取您的结构的副本并填充它,此后您将无法再访问它。如果传递指针,则指针output
后面的结构将被填充并保持可用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句