zoukankan      html  css  js  c++  java
  • golang 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
    }
  • 相关阅读:
    曾国藩谕纪泽纪鸿
    简单实现KeyChain实例
    UUID、UDID和KeyChain
    iOS沙盒目录结构解析 (转)
    BOOL布尔类型
    表达式
    赋值运算符
    变量
    常量
    GET请求和POST请求简单说明
  • 原文地址:https://www.cnblogs.com/lavin/p/7993978.html
Copyright © 2011-2022 走看看