添加slice的第三个参数的讲解
This commit is contained in:
19
zh/02.2.md
19
zh/02.2.md
@@ -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。
|
||||
此处罗列 部分类型 的 “零值”
|
||||
|
||||
|
||||
Reference in New Issue
Block a user