for 循环变量取内存地址
Posted lavin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了for 循环变量取内存地址相关的知识,希望对你有一定的参考价值。
前几天提交的代码进行测试的时候发现变量无法赋值,原始代码如下:
for _, asset := range dspInfo.native.Assets { var resAsset protocol.ResAsset resAsset.Id = asset.Id resAsset.Required = &asset.Required resAsset.AssetType = asset.AssetType }
经过分析,定位到问题:
循环中使用到了内存地址,将asset.Required 的地址赋值给新的变量,不仔细看感觉没有问题。
实际使用过程中由于asset 是一个变量,定义后for 循环的整个过程都不会变化,后面的asset.Required 会把前面的值覆盖,因此会出现问题。
进行如下修改即可:
for idx, asset := range dspInfo.native.Assets { var resAsset protocol.ResAsset resAsset.Id = asset.Id resAsset.Required = &dspInfo.native.Assets[idx].Required resAsset.AssetType = asset.AssetType }
以上是关于for 循环变量取内存地址的主要内容,如果未能解决你的问题,请参考以下文章