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

  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
}

 

相关文章:

  • 2022-01-23
  • 2021-12-18
  • 2021-06-02
  • 2022-01-24
  • 2021-11-04
  • 2022-12-23
  • 2022-12-23
  • 2022-01-12
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-20
  • 2022-03-05
  • 2022-12-23
  • 2021-05-28
相关资源
相似解决方案