码迷,mamicode.com
首页 > 其他好文 > 详细

for 循环变量取内存地址

时间:2017-12-06 19:53:26      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:native   内存   sse   循环   for   required   for 循环   测试   bsp   

前几天提交的代码进行测试的时候发现变量无法赋值,原始代码如下:

  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 循环变量取内存地址

标签:native   内存   sse   循环   for   required   for 循环   测试   bsp   

原文地址:http://www.cnblogs.com/lavin/p/7993978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!