You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go结构体匿名字段的可见性:公有还是私有?

Go语言匿名字段的可见性判定

Go语言里,匿名字段的公有/私有属性,由它对应的类型本身的可见性决定——因为匿名字段没有显式名称,就直接看它的类型是否能被外部包访问,逻辑和普通字段看名字大小写本质一致。

拿你给出的例子来说:

type myType struct {
  string
}

这里的匿名字段是内置的string类型,所有Go内置类型都是公开可见的,所以这个匿名字段属于公有字段,外部包可以直接通过myType的实例访问它,比如直接读取字段值或调用对应类型的方法。

再举个私有匿名字段的例子:

// 当前包内定义的私有类型(小写开头)
type privateStruct struct {
    num int
}

type myType struct {
    privateStruct // 这个匿名字段是私有的
}

因为privateStruct是当前包私有的类型,所以作为匿名字段时,外部包无法直接访问它,只能在当前包内操作。

简单总结:

  • 当匿名字段的类型是公开类型(大写开头的自定义类型、所有内置类型),该匿名字段就是公有的
  • 当匿名字段的类型是私有类型(小写开头的自定义类型),该匿名字段就是私有的

内容的提问来源于stack exchange,提问作者SOS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 14:18:12