添加slice的第三个参数的讲解

This commit is contained in:
astaxie
2015-03-09 00:19:05 +08:00
parent c3f3b4a5fe
commit 5105ad8883

View File

@@ -227,8 +227,6 @@ Go内置有一个`error`类型专门用来处理错误信息Go的`package`
prefix string
)
>除非被显式设置为其它值或`iota`,每个`const`分组的第一个常量被默认设置为它的0值第二及后续的常量被默认设置为它前面那个常量的值如果前面那个常量的值是`iota`,则它也被设置为`iota`。
### iota枚举
Go里面有一个关键字`iota`,这个关键字用来声明`enum`的时候采用它默认开始值是0每调用一次加1
@@ -246,6 +244,8 @@ Go里面有一个关键字`iota`,这个关键字用来声明`enum`的时候采
e, f, g = iota, iota, iota //e=0,f=0,g=0 iota在同一行值相同
)
>除非被显式设置为其它值或`iota`,每个`const`分组的第一个常量被默认设置为它的0值第二及后续的常量被默认设置为它前面那个常量的值如果前面那个常量的值是`iota`,则它也被设置为`iota`。
### Go程序设计的一些规则
Go之所以会那么简洁是因为它有一些默认的行为
- 大写字母开头的变量是可导出的,也就是其它包可以读取的,是公用变量;小写字母开头的就是不可导出的,是私有变量。
@@ -379,6 +379,19 @@ slice有一些简便的操作
注:`append`函数会改变`slice`所引用的数组的内容,从而影响到引用同一数组的其它`slice`。
但当`slice`中没有剩余空间(即`(cap-len) == 0`)时,此时将动态分配新的数组空间。返回的`slice`数组指针将指向这个空间,而原数组的内容将保持不变;其它引用此数组的`slice`则不受影响。
从Go1.2开始slice支持了三个参数的slice之前我们一直采用这种方式在slice或者array基础上来获取一个slice
var array [10]int
slice := array[2:4]
这个例子里面slice的容量是8新版本里面可以指定这个容量
slice = array[2:4:7]
上面这个的容量就是`7-2`即5。这样这个产生的新的slice就没办法访问最后的三个元素。
如果slice是这样的形式`array[:i:j]`即第一个参数为空默认值就是0。
### map
`map`也就是Python中字典的概念它的格式为`map[keyType]valueType`
@@ -448,6 +461,8 @@ slice有一些简便的操作
图2.5 make和new对应底层的内存分配
## 零值
关于“零值”所指并非是空值而是一种“变量未填充前”的默认值通常为0。
此处罗列 部分类型 的 “零值”