Merge pull request #58 from caiguo37/master

调整格式,修复一个typo
This commit is contained in:
astaxie
2012-10-09 18:07:59 -07:00

34
2.2.md
View File

@@ -257,19 +257,19 @@ Go之所以会那么简洁是因为它有一些默认的行为
数组可以使用另一种`:=`来声明
a := [3]int{1,2,3} // 声明了一个长度为3的int数组
a := [3]int{1, 2, 3} // 声明了一个长度为3的int数组
b := [10]int{1,2,3} // 声明了一个长度为10的int数组其中前三个元素初始化为1、2、3其它默认为0
b := [10]int{1, 2, 3} // 声明了一个长度为10的int数组其中前三个元素初始化为1、2、3其它默认为0
c := [...]int{4,5,6} // 可以省略长度而采用`...`的方式Go会自动根据元素个数来计算长度
c := [...]int{4, 5, 6} // 可以省略长度而采用`...`的方式Go会自动根据元素个数来计算长度
也许你会说我想数组里面还是数组能实现吗当然咯Go支持嵌套数组即多维数组。比如下面的代码就声明了一个二维数组
// 声明了一个二维数组该数组以两个数组作为元素其中每个数组中又有4个int类型的元素
doubleArray := [2][4]int {[4]int{1,2,3,4}, [4]int{5,6,7,8}}
// 声明了一个二维数组该数组以两个数组作为元素其中每个数组中又有4个int类型的元素
doubleArray := [2][4]int{[4]int{1, 2, 3, 4}, [4]int{5, 6, 7, 8}}
// 如果内部的元素和外部的一样,那么上面的声明可以简化,直接忽略内部的类型
easyArray :=[2][4]int{{1,2,3,4}, {5,6,7,8}}
// 如果内部的元素和外部的一样,那么上面的声明可以简化,直接忽略内部的类型
easyArray := [2][4]int{{1, 2, 3, 4}, {5, 6, 7, 8}}
数组的分配如下所示:
@@ -320,21 +320,21 @@ slice有一些简便的操作
下面这个例子展示了更多关于`slice`的操作:
// 声明一个数组
var array = [10]byte {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}
var array = [10]byte{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'}
// 声明两个slice
var aSlice,bSlice
var aSlice, bSlice []byte
// 演示一些简便操作
aSlice = array[:3] // 等价于aSlice = array[0:3] aSlice包含元素: a,b,c
aSlice = array[5:] // 等价于aSlice = array[5:9] aSlice包含元素: f,g,h,i,j
aSlice = array[:] // 等价于aSlice = array[0:9] 这样aSlice包含了全部的元素
aSlice = array[:3] // 等价于aSlice = array[0:3] aSlice包含元素: a,b,c
aSlice = array[5:] // 等价于aSlice = array[5:9] aSlice包含元素: f,g,h,i,j
aSlice = array[:] // 等价于aSlice = array[0:9] 这样aSlice包含了全部的元素
// 从slice中获取slice
aSlice = array[3:7] // aSlice包含元素: d,e,f,glen=4cap=8
bSlice = aSlice[1:3] // bSlice 包含aSlice[1], aSlice[2] 也就是含有: e,f
bSlice = aSlice[:3] // bSlice 包含 aSlice[0], aSlice[1], aSlice[2] 也就是含有: d,e,f
bSlice = aSlice[0:5] // 对slice的slice可以在cap范围内扩展此时bSlice包含c,d,e,f,g
bSlice : aSlice[:] // bSlice包含所有aSlice的元素: d,e,f,g
aSlice = array[3:7] // aSlice包含元素: d,e,f,glen=4cap=8
bSlice = aSlice[1:3] // bSlice 包含aSlice[1], aSlice[2] 也就是含有: e,f
bSlice = aSlice[:3] // bSlice 包含 aSlice[0], aSlice[1], aSlice[2] 也就是含有: d,e,f
bSlice = aSlice[0:5] // 对slice的slice可以在cap范围内扩展此时bSlice包含c,d,e,f,g
bSlice = aSlice[:] // bSlice包含所有aSlice的元素: d,e,f,g
`slice`是引用类型,所以当引用改变其中元素的值时,其它的所有引用都会改变该值,例如上面的`aSlice`和`bSlice`,如果修改了`aSlice`中元素的值,那么`bSlice`相对应的值也会改变。