知识卡片

未导出字段配合构造函数实现校验

专业/工作 · 473.a.1.a.1

内容

Go没有构造函数语法,因为语言保证任何值创建时都会被初始化成零值,多数类型的零值天然合法(比如Point{x, y int}任何整数组合都说得通)。发散:这是用”包”这个作用域边界来实现封装,而不是靠类似private关键字的语言级访问控制——Go的可见性规则只有一条(首字母大小写决定包内外可见性),所有精细的访问控制模式(只读字段、校验字段)都要靠这一条规则和”把字段设为非导出”的组合。

参考来源

- 位置:《Go语言程序设计》第6章《面向对象编程》(源文件:_epub-src/OEBPS/text00038.html) - 结论依据:原文在该章节围绕“Go没有构造函数语法,因为语言保证任何值创建时都会被初始化成零值,多数类型的零值天然合法(比如`Point{x…”给出定义、示例或限制条件;摘录中的术语、代码片段或对比关系直接支撑本卡片的结论。 - 原始内容:为映射里面的项都是无序的,所以在其他机器上打印出来的结果顺序可能和本书的不一样。 之前提过,映射的键可以是一个指针,我们下面将会看到一个例子,它的键的类型是 *Point,Point 定义如下: type Point struct { x, y, z int } func (point Point) String() string { r…