如何通过引用传递嵌套结构进行反射?
Oct 24, 2024 am 01:49 AM通过引用传递嵌套结构进行反射
简介
考虑以下客户和联系人数据结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
我们的目标是使用反射来迭代所有客户端结构字段,为原始字段设置默认值,并递归地将相同的步骤应用于任何嵌套结构字段。但是,在尝试为 PrimaryContact 字段设置值时,我们遇到了“reflect.Value.Set using unaddressable value”恐慌。
通过引用传递
问题的出现是因为PrimaryContact 通过值而不是通过引用传递。为了解决这个问题,我们必须通过引用传递 PrimaryContact。为此,我们使用 Value.Addr() 来获取结构体字段的指针值。
解决方案
以下代码演示了如何通过引用传递 PrimaryContact:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
通过使用 v.Field(i).Addr() 获取每个结构体字段的指针值,我们可以修改实际的结构体字段而不是副本。
示例
为了说明解决方案,让我们考虑以下客户端实例:
1 |
|
调用 SetDefault() 函数后,我们得到:
1 |
|
这表明嵌套的 PrimaryContact 结构字段也已设置为默认值。
以上是如何通过引用传递嵌套结构进行反射?的详细内容。更多信息请关注PHP中文网其他相关文章!

热门文章

热门文章

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)