diff --git a/ch4/ch4-04-1.md b/ch4/ch4-04-1.md index 035eb4e..45a7e32 100644 --- a/ch4/ch4-04-1.md +++ b/ch4/ch4-04-1.md @@ -1,6 +1,6 @@ -### 4.4.1. 结构体面值 +### 4.4.1. 结构体字面值 -结构体值也可以用结构体面值表示,结构体面值可以指定每个成员的值。 +结构体值也可以用结构体字面值表示,结构体字面值可以指定每个成员的值。 ```Go type Point struct{ X, Y int } @@ -8,7 +8,7 @@ type Point struct{ X, Y int } p := Point{1, 2} ``` -这里有两种形式的结构体面值语法,上面的是第一种写法,要求以结构体成员定义的顺序为每个结构体成员指定一个面值。它要求写代码和读代码的人要记住结构体的每个成员的类型和顺序,不过结构体成员有细微的调整就可能导致上述代码不能编译。因此,上述的语法一般只在定义结构体的包内部使用,或者是在较小的结构体中使用,这些结构体的成员排列比较规则,比如image.Point{x, y}或color.RGBA{red, green, blue, alpha}。 +这里有两种形式的结构体字面值语法,上面的是第一种写法,要求以结构体成员定义的顺序为每个结构体成员指定一个字面值。它要求写代码和读代码的人要记住结构体的每个成员的类型和顺序,不过结构体成员有细微的调整就可能导致上述代码不能编译。因此,上述的语法一般只在定义结构体的包内部使用,或者是在较小的结构体中使用,这些结构体的成员排列比较规则,比如image.Point{x, y}或color.RGBA{red, green, blue, alpha}。 其实更常用的是第二种写法,以成员名字和相应的值来初始化,可以包含部分或全部的成员,如1.4节的Lissajous程序的写法: @@ -16,7 +16,7 @@ p := Point{1, 2} anim := gif.GIF{LoopCount: nframes} ``` -在这种形式的结构体面值写法中,如果成员被忽略的话将默认用零值。因为,提供了成员的名字,所有成员出现的顺序并不重要。 +在这种形式的结构体字面值写法中,如果成员被忽略的话将默认用零值。因为,提供了成员的名字,所有成员出现的顺序并不重要。 两种不同形式的写法不能混合使用。而且,你不能企图在外部包中用第一种顺序赋值的技巧来偷偷地初始化结构体中未导出的成员。