统一术语和格式

This commit is contained in:
leisore
2015-07-09 23:02:40 +08:00
parent caf6cd9d5f
commit c2d4d3a5e8
4 changed files with 22 additions and 21 deletions

View File

@@ -12,9 +12,9 @@ type identifier struct {
`type T struct {a, b int}`也是合法的语法,它更适用于简单的结构体。
这个结构体里的成员都有*名字*像field1field2等如果成员在代码中从来也不会被用到,那么可以命名它为*_*。
这个结构体里的字段都有*名字*像field1field2等如果字段在代码中从来也不会被用到,那么可以命名它为*_*。
结构体的成员可以是任何类型,甚至是结构体本身(参考[10.5](10.5.md)可以是函数或者接口参考第11章。可以声明结构体类型的一个变量然后给它的成员像下面这样赋值:
结构体的字段可以是任何类型,甚至是结构体本身(参考[10.5](10.5.md)可以是函数或者接口参考第11章。可以声明结构体类型的一个变量然后给它的字段像下面这样赋值:
```go
var s T
@@ -22,7 +22,7 @@ s.a = 5
s.b = 8
```
数组可以看作是一种结构体类型,不过它使用下标而不是具名的成员
数组可以看作是一种结构体类型,不过它使用下标而不是具名的字段
**使用new**
@@ -33,7 +33,7 @@ var t *T
t = new(T)
```
写这条语句的惯用方法是:`t := new(T)`,变量`t`是一个指向`T`的指针,此时结构体成员的值是它们所属类型的零值。
写这条语句的惯用方法是:`t := new(T)`,变量`t`是一个指向`T`的指针,此时结构体字段的值是它们所属类型的零值。
声明`var t T`也会给`t`分配内存,并零值化内存,但是这个时候`t`是类型T。在这两种方式中`t`通常被称做类型T的一个实例(instance)或对象(Object)。
@@ -71,11 +71,11 @@ func main {
使用fmt.Println打印一个结构体的默认输出可以很好的显示它的内容类似使用*%v*选项。
就像在面向对象语言所作的那样,可以使用逗号符给成员赋值:` structname.fieldname = value `
就像在面向对象语言所作的那样,可以使用逗号符给字段赋值:` structname.fieldname = value `
同样的,使用逗号符可以获取结构体成员的值:` structname.fieldname `
同样的,使用逗号符可以获取结构体字段的值:` structname.fieldname `
在Go语言中这叫*选择器(selector)*。无论变量是一个结构体类型还是一个结构体类型指针,都使用同样的*选择器符(selector-notation)*来引用结构体的成员
在Go语言中这叫*选择器(selector)*。无论变量是一个结构体类型还是一个结构体类型指针,都使用同样的*选择器符(selector-notation)*来引用结构体的字段
```go
type myStruct struct { i int }
@@ -99,7 +99,7 @@ p.i
ms := struct1{10, 15.5, "Chris"}
```
混合字面量语法(composite literal syntax)`&struct1{a, b, c}`是一种简写,底层仍然会调用`new ()`,这里值的顺序必须按照成员顺序来写。在下面的例子中能看到可以通过在值的前面放上成员名来初始化成员的方式。表达式`new(Type)``&Type{}`是等价的。
混合字面量语法(composite literal syntax)`&struct1{a, b, c}`是一种简写,底层仍然会调用`new ()`,这里值的顺序必须按照字段顺序来写。在下面的例子中能看到可以通过在值的前面放上字段名来初始化字段的方式。表达式`new(Type)``&Type{}`是等价的。
时间间隔(开始和结束时间以秒为单位)是使用结构体的一个典型例子:
@@ -118,9 +118,9 @@ intr := Interval(end:5, start:1) (B)
intr := Interval(end:5) (C)
```
A值必须以成员在结构体定义时的顺序给出,*&*不是必须的。B显示了另一种方式成员名加一个冒号放在值的前面,这种情况下值的顺序不必一致,并且某些成员还可以被忽略掉就像C中那样。
A值必须以字段在结构体定义时的顺序给出,*&*不是必须的。B显示了另一种方式字段名加一个冒号放在值的前面,这种情况下值的顺序不必一致,并且某些字段还可以被忽略掉就像C中那样。
结构体类型和成员的命名遵循可见性规则([4.2](4.2.md),一个导出的结构体类型中有些成员是导出的,另一些不是,这是可能的。
结构体类型和字段的命名遵循可见性规则([4.2](4.2.md),一个导出的结构体类型中有些字段是导出的,另一些不是,这是可能的。
下图说明了结构体类型实例和一个指向它的指针的内存布局:
@@ -186,7 +186,7 @@ func main() {
The name of the person is CHRIS WOODWARD
The name of the person is CHRIS WOODWARD
在上面例子的第二种情况中,可以直接通过指针,像`pers2.lastName="Woodward"`这样给结构体成员赋值没有像C++中那样需要使用`->`操作符Go会自动做这样的转换。
在上面例子的第二种情况中,可以直接通过指针,像`pers2.lastName="Woodward"`这样给结构体字段赋值没有像C++中那样需要使用`->`操作符Go会自动做这样的转换。
注意也可以通过解指针的方式来设置值:`(*pers2).lastName = "Woodward"`
@@ -209,7 +209,7 @@ type Rect2 struct {Min, Max *Point }
![](images/10.1_fig10.3.jpg?raw=true)
这块的`data`成员用于存放有效数据比如float64`su`指针指向后继节点。
这块的`data`字段用于存放有效数据比如float64`su`指针指向后继节点。
Go代码