update 2.3 .png files and fix some sentences

updates 2.3.inti.png
fix words/ sentences in 2.2 and 2.3
This commit is contained in:
Wenlei
2012-10-13 16:50:57 +08:00
parent a822be1f1a
commit 800d2fe2cf
3 changed files with 13 additions and 6 deletions

1
2.2.md
View File

@@ -108,6 +108,7 @@ Go对于已声明但未使用的变量会在编译阶段报错比如下面的
> var a int8
> var b int32
> c:=a + b
>另外尽管int的长度是32 bit, 但int 与 int32并不可以互用。
浮点数的类型有`float32``float64`两种(没有`float`类型),默认是`float64`

18
2.3.md
View File

@@ -109,7 +109,12 @@ Go里面最强大的一个控制逻辑就是`for`,它即可以用来循环读
fmt.Println("map's val:",v)
}
其中还可以使用`_`来丢弃不需要的返回值
由于 Go 支持 “多值返回”, 而对于“声明而未被调用”的变量, 编译器会报错, 在这种情况下, 可以使用`_`来丢弃不需要的返回值
例如
for _, v := range map{
fmt.Println("map's val:", v)
}
###switch
@@ -140,7 +145,7 @@ Go里面最强大的一个控制逻辑就是`for`,它即可以用来循环读
fmt.Println("All I know is that i is an integer")
}
在第5行中我们把很多值聚合在了一个`case`里面同时Go里面`switch`默认相当于每个`case`带有`break`,匹配成功后不会自动向下尝试,而是跳出整个`switch`了,但是可以使用`fallthrough`使其这样做
在第5行中我们把很多值聚合在了一个`case`里面同时Go里面`switch`默认相当于每个`case`后带有`break`,匹配成功后不会自动向下执行其他case,而是跳出整个`switch`, 但是可以使用`fallthrough`强制执行后面的case代码
integer := 6
switch integer {
@@ -186,8 +191,9 @@ Go里面最强大的一个控制逻辑就是`for`,它即可以用来循环读
- 函数可以有一个或者多个参数,每个参数后面带有类型,通过`,`分隔
- 函数可以返回多个值
- 上面返回值声明了两个变量`output1``output2`,如果你不想声明也可以,直接就两个类型
- 如果只有一个返回值且不声明返回值变量,那么你可以省略用以包括返回值的括号
- 如果只有一个返回值且不声明返回值变量,那么你可以省略 包括返回值 的括号
- 如果没有返回值,那么就直接省略最后的返回信息
- 如果有返回值, 那么必须在函数的外层添加return语句
下面我们来看一个实际应用函数的例子用来计算Max值
@@ -215,7 +221,7 @@ Go里面最强大的一个控制逻辑就是`for`,它即可以用来循环读
fmt.Printf("max(%d, %d) = %d\n", y, z, max(y,z)) // 也可在这直接调用它
}
上面这个里面我们可以看到`max`函数有两个参数,它们的类型都是`int`那么第一个变量的类型可以省略默认为离它最近的类型同理多于2个同类型的变量或者返回值。同时我们注意到它的返回值就是一个类型这个就是省略写法。
上面这个里面我们可以看到`max`函数有两个参数,它们的类型都是`int`,那么第一个变量的类型可以省略(即 a,b int,而非 a int, b int)默认为离它最近的类型同理多于2个同类型的变量或者返回值。同时我们注意到它的返回值就是一个类型这个就是省略写法。
###多个返回值
Go语言和C相比更先进的地方其中一点就是能够返回多个值也许这个思想来源于Python。
@@ -283,7 +289,7 @@ Go函数支持变参。接受变参的函数是有着不定数量的参数的。
fmt.Println("x = ", x) // 应该输出"x = 3"
}
看到了吗?虽然我们调用了`add1`函数,并且在`add1`中执行`a=a+1`操作,但是上面例子中`x`变量的值没有发生变化
看到了吗?虽然我们调用了`add1`函数,并且在`add1`中执行`a = a+1`操作,但是上面例子中`x`变量的值没有发生变化
理由很简单:因为当我们调用`add1`的时候,`add1`接收的参数其实是`x`的copy而不是`x`本身。
@@ -314,7 +320,7 @@ Go函数支持变参。接受变参的函数是有着不定数量的参数的。
这样,我们就达到了修改`x`的目的。那么到底传指针有什么好处呢?
- 传指针使得多个函数能操作同一个对象。
- 传指针比较轻量级只是传内存地址,我们可以通过指针高效的传递大的结构体。如果传值的话,那么每次传递, 在copy上面就会花费大量的时间和内存。所以记住了当你要传递大的结构体的时候用指针是一个明智的选择。
- 传指针比较轻量级 (8 bytes)只是传内存地址,我们可以通过指针高效的传递大的结构体。如果传值的话,那么每次传递, 在copy上面就会花费大量的时间和内存。所以记住了当你要传递大的结构体的时候用指针是一个明智的选择。
- Go语言中`string``slice``map`这三种类型的实现机制类似指针,所以可以直接传递,而不用取地址后传递指针。(注:若函数需改变`slice`的长度,则仍需要取地址传递指针)
###defer

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 93 KiB