内建容器
一、数组
|
|
遍历数组
|
|
- 可以使用关键字 range 进行遍历
- 可通过 省略变量(任何地方都可通过 省略变量)
- 如果只要 i ,可写成 for i := range arrs
为什么使用 range 进行遍历:
- 意义明确、美观
- 相对于其他语言获取值比较便利
数组是值类型
- 函数调用时,是拷贝数组
- [3]int 和 [5]int 是不同类型
- 在 golang 中一般不使用数组,而是切片
二、切片 Slice
|
|
- slice 本身是没有数据的,是对底层数组的一种视图
slice 的扩展
slice 可以向后扩展,不可以向前扩展
s[i] 不可以超越 len(s),向后扩展不可以超越底层数组 cap(s)
slice 的实现
ptr、len、cap
slice 添加元素
- 添加元素时如果超越 cap,系统会重新分配更大的底层数组
- 由于值传递的关系,必须接收 append 的返回值
slice 的创建
- 内建函数 make([]int ,16,32) len -16 cap - 32
slice copy 、delete、
- copy(s1,s2)
- delete 直接用 slice 或 append
三、Map
|
|
map 遍历、取值、删除
|
|
- k 和 v 可以 _ 省略
- 无序(hashmap)
- 使用 len 获取个数
- 获取值 m[“key”]
- key 不存在时,获取 value 类型的初始值
- 用 value,ok := m[key] 来判断是否存在 key
map 的key
- map 使用哈希表,必须可以比较相等
- 出来 slice、map、function 的内建类型都可以作为 key
- Struct 类型不包含上述字段,也可以作为 key
四、字符和字符串 string
- 使用 rune 相当于 go 的 char
- 使用 utf8.RuneCountInString 活得字符数量
- 使用 len 获得字节长度
- 使用 [] byte 获得字节
- 使用 range 遍历 (pos ,rune) 对
- Fields,Split,Join
- Contains,Index
- ToLower,ToUpper
- Trim,TrimRight,TrimLeft