知识卡片
封装单位是包而非类
内容
Go 没有 class 关键字,封装靠的是[[大小写即可见性]]这条规则本身:把 struct 字段名改成小写, 它就只能被同一个包内的代码访问,包外代码即使拿到了这个类型的值也无法直接读写该字段,只能通过 这个包里导出的 setter/getter 方法间接访问,setter 里可以顺带发散:这 意味着 Go 里”封装边界”天然就是包边界,同一个包内的所有代码即便类型不同也能互相看到彼此的 未导出细节——这背。
参考来源
- 位置:《Head First Go语言程序设计》第10章《保密:封装和嵌入》(源文件:_epub-src/index_split_002.html)
- 结论依据:原文在该章节围绕“Go没有class关键字,封装靠的是[[大小写即可见性]]这条规则本身:把struct字段名改成小写,它就只能…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。
- 原始内容:这个模式在Date类型上定义SetMonth和 SetDay方法。我们只需要在方法中使用指针接收器即可。在调用方法 时,Go会自动把接收器转换为指针,并且在修改struct字段时能够把指 针转换回struct值。 在main函数中,我们创建了一个Date struct的值;通过新的方法设 置了它的Year、Month和Day字段;并且输出…