基本数据类型
数组(array)
切片(slice)
- 声明和初始化
切片只有 3 个组件:
- * 指向基础数组中第一个可访问元素的指针。 此元素不一定是基础数组的第一个元素 array[0] 。
- length 切片的长度。 切片中的元素数目。
- capacity 切片的容量。切片容量仅指出切片可扩展的程度,即切片开头与基础数组尾端之间的元素数目。
从切片 quarter2 创建扩展切片,如下例所示
注意, 长度与容量的区别:切片长度指切片实际包含的元素数量;切片容量指切片可扩展的程度。
在上例中,切片长度为 3 个元素,但容量为 9,原因是基础数组有更多元素或位置可供使用,但对切片而言不可见。 例如,如果你尝试打印类似 fmt.Println(quarter2[3]) 的内容,会出现以下错误: panic: runtime error: index out of range [3] with length 3 。
- 创建切片的副本
Go 具有内置函数 copy(dst, src []Type) 用于创建切片的副本。 例如:
为何要创建副本? 因为更改非副本切片中的元素时,基础数组将随之更改。
注意, copy之后, 切片不会继承基础数组的capacity.
字符串遍历
byteuint8runeint32
Tips:
Unicode 和 ASCII 一样,是一种字符集,UTF-8 则是一种编码方式.
Unicode 从 0 开始,为每个符号指定一个编号,这叫做「码点」(code point).
UTF-8 是一种变长的编码方法,字符长度从 1 个字节到 4 个字节不等, 其中一个汉字占用3个字节.
总结:
runerange