修改了一些发现的错别字和概念的地方

This commit is contained in:
astaxie
2012-08-27 09:56:57 +08:00
parent 5fdd0e1538
commit 4b7bb36752
2 changed files with 620 additions and 620 deletions

28
2.2.md
View File

@@ -273,7 +273,7 @@ array就是数组它的定义如下`[n]type`,n表示数组的长度type表
###slice ###slice
我们很多的应用场景里面,数组不能满足我们的需求,因为我们不知道刚开始申明的时候到底需要多大的数组,也就是我们需要动态数组GO里面我们叫做`slice` 很多的应用场景里面,数组不能满足我们的需求,因为刚开始的时候,我们不知道到底需要多大的数组合适,所以我们需要动态数组,在go里面这种数据结构叫`slice`
`slice`并不是真正意义上面的动态数组,而是一个引用类型,`slice`总是指向底层的一个`array`。`slice`的申明也可以像`array`一样只要省略size `slice`并不是真正意义上面的动态数组,而是一个引用类型,`slice`总是指向底层的一个`array`。`slice`的申明也可以像`array`一样只要省略size
@@ -286,19 +286,19 @@ array就是数组它的定义如下`[n]type`,n表示数组的长度type表
slice可以从一个数组或者一个已经存在的slice里面再次申明`slice`通过array[i:j]来获取i是数组的开始位置j是结束位置但不包含array[j]他的长度是j-i slice可以从一个数组或者一个已经存在的slice里面再次申明`slice`通过array[i:j]来获取i是数组的开始位置j是结束位置但不包含array[j]他的长度是j-i
//申明一个含有10个字符元素的数组 //申明一个含有个字符元素的数组
var array [10]byte {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'} var ar[10]byte {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}
//申明个含有byte的slice //申明个含有byte的slice
var a_slice,b_slice,c_slice []byte var a,b[]byte
//a_slice指向数组的第2个元素开始并到第五个元素结束 //a指向数组的第2个元素开始并到第五个元素结束
a_slice = array[2:5] a = ar[2:5]
//现在a_slice含有的元素: array[2], array[3] and array[4] //现在a含有的元素: ar[2], ar[3] and ar[4]
// b_slice是另一个数组的slice. // b是数组ar的另一个slice.
b_slice = array[3:5] b = ar[3:5]
// b_slice的元素是: array[3], array[4] // b的元素是: ar[3], ar[4]
注意slice和数组申明时的区别申明数组时方括号内写明了数组的长度或使用`...`自动计算长度而申明slice时方括号内没有任何字符 注意slice和数组申明时的区别申明数组时方括号内写明了数组的长度或使用`...`自动计算长度而申明slice时方括号内没有任何字符
@@ -333,7 +333,7 @@ slice有一些简便的操作
slice是引用类型所以当引用改变其中项目的值的时候那么其他的所有引用都会改变该值例如上面的a_slice和b_slice如果修改了a_slice中项目的值那么b_slice相对应的值也会改变。 slice是引用类型所以当引用改变其中项目的值的时候那么其他的所有引用都会改变该值例如上面的a_slice和b_slice如果修改了a_slice中项目的值那么b_slice相对应的值也会改变。
从概念上面来说slice一个结构体,这个结构体包含了三个元素: 从概念上面来说slice一个结构体,这个结构体包含了三个元素:
- 一个指针指向数组中slice指定的开始位置 - 一个指针指向数组中slice指定的开始位置
- 长度slice的长度 - 长度slice的长度
- 最大长度也就是slice开始位置到数组的最后位置的长度 - 最大长度也就是slice开始位置到数组的最后位置的长度
@@ -359,7 +359,7 @@ slice下面有几个有用的内置函数
map也就是python中字典的概念它的格式`map[keyType]valueType` map也就是python中字典的概念它的格式`map[keyType]valueType`
我们看下面的代码map的读取和设置也类似slice一样通过key来操作只是slice只有int的key而map多了很多类型可以是int可以是string 我们看下面的代码map的读取和设置也类似slice一样通过key来操作只是slice只有int的key而map多了很多类型可以是int可以是string及所有完全定义了"=="与"!="操作的类型
// 申明一个key是字符串值为int的字典 // 申明一个key是字符串值为int的字典
var numbers map[string] int var numbers map[string] int
@@ -395,7 +395,7 @@ map的初始化可以通过key:val的方式初始化值同时map内置有判
fmt.Println("We have no rating associated with C# in the map") fmt.Println("We have no rating associated with C# in the map")
} }
delete rating["C"] //删除key为C的元素 delete( rating "C") //删除key为C的元素
上面说过了map也是一种引用类型如果两个map同时指向一个底层那么一个改变另一个也相应的改变 上面说过了map也是一种引用类型如果两个map同时指向一个底层那么一个改变另一个也相应的改变

4
2.3.md
View File

@@ -37,7 +37,7 @@ Go的if还有一个强大的地方就是条件里面允许申明一个变量
###goto ###goto
Go有goto语句——明智的使用它。用goto跳转到一定是当前函数内定义的标签。例如假设这样一个循环 Go有goto语句——明智的使用它。用goto跳转到一定是当前函数内定义的标签。例如假设这样一个循环
func myfunc() { func myfunc() {
i := 0 i := 0
@@ -89,7 +89,7 @@ expression1、expression2、expression3都是表达式其中expression1和exp
sum += sum sum += sum
} }
在循环里面有两个关键操作`break``continue` ,`break`操作是跳出当前循环,`continue`是跳出本次循环,详细参考如下例子 在循环里面有两个关键操作`break``continue` ,`break`操作是跳出当前循环,`continue`是跳出本次循环,当嵌套过深的时候,break可以配合标签使用,即跳出标签所指定的循环,详细参考如下例子
for index := 10; index>0; index-- { for index := 10; index>0; index-- {
if index == 5{ if index == 5{