为了账号安全,请及时绑定邮箱和手机立即绑定

是否在匿名结构中导出字段有什么区别吗?

是否在匿名结构中导出字段有什么区别吗?

Go
人到中年有点甜 2023-07-17 14:49:48
在 golang 中导出(或不导出)匿名结构中的字段有什么区别吗?换句话说,以下两个代码块是否有任何不同?考虑到它是一个匿名结构,您不能在变量本身之外使用该结构,因此我假设大写 F 在编译时不会产生影响(没有编译速度或运行时内存差异)。区块 1:var test = struct {   FieldOne string   FieldTwo string} {   FieldOne: "some string",   FieldTwo: "some other string",}区块 2:var test = struct {   fieldOne string   fieldTwo string} {   fieldOne: "some string",   fieldTwo: "some other string",}
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

当然可以,由于反思。尝试json.Marshal(test)在每次声明后致电。在第一种情况下,您将得到{"FieldOne":"some string","FieldTwo":"some other string"},但在第二种情况下,您将得到{}。这是因为 JSON 封送拆收器仅“看到”导出的结构字段。更一般地说,即使 的类型test没有名称,也不意味着该类型本身不可访问;任何有反射的东西都可以访问它。



查看完整回答
反对 回复 2023-07-17
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

在 golang 中导出(或不导出)匿名结构中的字段有什么区别吗?

json.Marshal当然,所有通常的规则都适用(例如,如果您尝试将结构提供给 ,您会看到差异)。


查看完整回答
反对 回复 2023-07-17
  • 2 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信