From 5df7829fb6ff8dde4ff9277b232c5742bae149d1 Mon Sep 17 00:00:00 2001 From: leisore Date: Mon, 8 Jun 2015 23:41:46 +0800 Subject: [PATCH] * ch10.1 part --- eBook/10.1.md | 26 ++++++++++++++++-- .../{10.1_fig10.1.jpg => 10.1_fig10.1-2.jpg} | Bin eBook/images/10.1_fig10.2.jpg | Bin 0 -> 16581 bytes 3 files changed, 23 insertions(+), 3 deletions(-) rename eBook/images/{10.1_fig10.1.jpg => 10.1_fig10.1-2.jpg} (100%) create mode 100644 eBook/images/10.1_fig10.2.jpg diff --git a/eBook/10.1.md b/eBook/10.1.md index 861b648..d97ae5c 100644 --- a/eBook/10.1.md +++ b/eBook/10.1.md @@ -134,7 +134,7 @@ type Point struct { x, y int } 作为结构体字面量初始化: -![](images/10.1_fig10.1.jpg?raw=true) +![](images/10.1_fig10.1-2.jpg?raw=true) 类型strcut1在定义它的包pack1中必须是唯一的,它的完全类型名是:`pack1.struct1`。 @@ -174,9 +174,9 @@ func main() { fmt.Printf("The name of the person is %s %s\n", pers2.firstName, pers2.lastName) // 3—struct as a literal: - pers3 := &Person{“Chris”,“Woodward”} + pers3 := &Person{"Chris","Woodward"} upPerson(pers3) - fmt.Printf(“The name of the person is %s %s\n”, pers3.firstName, pers3.lastName) + fmt.Printf("The name of the person is %s %s\n", pers3.firstName, pers3.lastName) } ``` @@ -188,6 +188,26 @@ func main() { The name of the person is CHRIS WOODWARD The name of the person is CHRIS WOODWARD +在上面例子的第二种情况中,像`pers2.lastName="Woodward"`这样,可以直接通过指针,像`pers2.lastName="Woodward"`这样给结构体成员赋值,没有像C++那样需要使用`->`操作符,Go会自动做这样的转换。 + +注意也可以通过解指针的方式来设置值: + +```go +(*pers2).lastName = "Woodward" +``` + +**结构体和内存布局** + +Go语言中的结构体和它所包含的数据在内存中是以连续块的形式存在的,即使结构体中嵌套有其他的结构体,这带来了很大的性能优势。不像Java中的引用类型,一个对象和它里面包含的对象可能会在不同的内存空间中,Go中的指针和这个很像。下面的例子清晰的说明了这些情况: + +```go +type Rect1 struct {Min, Max Point } +type Rect2 struct {Min, Max *Point } +``` + +![](images/10.1_fig10.2.jpg?raw=true) + +**递归结构体** **练习9.2** diff --git a/eBook/images/10.1_fig10.1.jpg b/eBook/images/10.1_fig10.1-2.jpg similarity index 100% rename from eBook/images/10.1_fig10.1.jpg rename to eBook/images/10.1_fig10.1-2.jpg diff --git a/eBook/images/10.1_fig10.2.jpg b/eBook/images/10.1_fig10.2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c1c74ae42807b2018f4cecfecf1c49aa66cf721e GIT binary patch literal 16581 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