mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 03:34:15 +08:00
modified: eBook/10.1.md
This commit is contained in:
@@ -35,7 +35,7 @@ t = new(T)
|
|||||||
|
|
||||||
写这条语句的惯用方法是:`t := new(T)`,变量 `t` 是一个指向 `T`的指针,此时结构体字段的值是它们所属类型的零值。
|
写这条语句的惯用方法是:`t := new(T)`,变量 `t` 是一个指向 `T`的指针,此时结构体字段的值是它们所属类型的零值。
|
||||||
|
|
||||||
声明 `var t T` 也会给 `t` 分配内存,并零值化内存,但是这个时候 `t` 是类型T。在这两种方式中,`t` 通常被称做类型 T 的一个实例(instance)或对象(Object)。
|
声明 `var t T` 也会给 `t` 分配内存,并零值化内存,但是这个时候 `t` 是类型T。在这两种方式中,`t` 通常被称做类型 T 的一个实例(instance)或对象(object)。
|
||||||
|
|
||||||
示例 10.1 [structs_fields.go](examples/chapter_10/structs_fields.go) 给出了一个非常简单的例子:
|
示例 10.1 [structs_fields.go](examples/chapter_10/structs_fields.go) 给出了一个非常简单的例子:
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ v.i
|
|||||||
p.i
|
p.i
|
||||||
```
|
```
|
||||||
|
|
||||||
初始化一个结构体实例(一个结构体字面量:struct-literal)的更简短和惯用的方式如下:
|
初始化一个结构体实例(一个结构体字面量:struct-literal)的更简短和惯用的方式如下:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
ms := &struct1{10, 15.5, "Chris"}
|
ms := &struct1{10, 15.5, "Chris"}
|
||||||
@@ -120,7 +120,7 @@ intr := Interval{end:5} (C)
|
|||||||
|
|
||||||
在(A)中,值必须以字段在结构体定义时的顺序给出,**&** 不是必须的。(B)显示了另一种方式,字段名加一个冒号放在值的前面,这种情况下值的顺序不必一致,并且某些字段还可以被忽略掉,就像(C)中那样。
|
在(A)中,值必须以字段在结构体定义时的顺序给出,**&** 不是必须的。(B)显示了另一种方式,字段名加一个冒号放在值的前面,这种情况下值的顺序不必一致,并且某些字段还可以被忽略掉,就像(C)中那样。
|
||||||
|
|
||||||
结构体类型和字段的命名遵循可见性规则(第 [4.2](04.2.md) 节),一个导出的结构体类型中有些字段是导出的,另一些不是,这是可能的。
|
结构体类型和字段的命名遵循可见性规则(第 [4.2](04.2.md) 节),一个导出的结构体类型中有些字段是导出的,另一些不是,这是可能的。
|
||||||
|
|
||||||
下图说明了结构体类型实例和一个指向它的指针的内存布局:
|
下图说明了结构体类型实例和一个指向它的指针的内存布局:
|
||||||
|
|
||||||
@@ -138,7 +138,7 @@ type Point struct { x, y int }
|
|||||||
|
|
||||||
类型 strcut1 在定义它的包 pack1 中必须是唯一的,它的完全类型名是:`pack1.struct1`。
|
类型 strcut1 在定义它的包 pack1 中必须是唯一的,它的完全类型名是:`pack1.struct1`。
|
||||||
|
|
||||||
下面的例子 [Listing 10.2—person.go](examples/person.go) 显示了一个结构体 Person,一个方法,方法有一个类型为 `*Person` 的参数(因此对象本身是可以被改变的),以及三种调用这个方法的不同方式:
|
下面的例子 [Listing 10.2—person.go](examples/chapter_10/struct_pack/person.go) 显示了一个结构体 Person,一个方法,方法有一个类型为 `*Person` 的参数(因此对象本身是可以被改变的),以及三种调用这个方法的不同方式:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
package main
|
package main
|
||||||
|
Reference in New Issue
Block a user