内建容器
数组
- 数量写在类型前面
- 遍历数组
range
-
数组是值类型
[10]int
和[20]int
是不同类型- 调用
func f(arr [10]int)
会 拷贝 数组
切片的概念
-
Slice本身没有数据,是对底层array的一个view
-
Slice的扩展
-
Slice的实现
-
范例
切片的操作
-
向Slice添加元素
- 添加元素时如果超越cap,系统会重新分配更大的底层数组
- 由于值传递的关系,必须接受append的返回值
-
s = append(s, val)
-
更多操作
Map
- map[K]V
- map[K1]map[K2]V (复合map)
- 创建:make(map[string]int)
- 获取元素:m[key]
- key不存在时,获得value类型的初始值
- 用value, ok := m[key] 来判断是否存在key
- 用delete删除一个key
- 使用range遍历key,或者遍历key, value对
- 不保证遍历顺序,如需要顺序,需要手动对key进行排序操作
- 使用len获得元素的个数
- map使用哈希表,必须可以比较相等
- 除了slice、map、function的内建类型都可以作为key
- Struct类型不包含上述字段,也可作为key
- 范例
Map例题
寻找最长不含有重复字符的子串
例如:
qweqwert -> qwe
cdewqcfewq -> cdewqcf
ccccccc -> c
实现逻辑:对于每一个字母x
lastOccurred[x]不存在,或者 < start -> 无需操作
lastOccurred[x] >= start -> 更新start
更新lastOccurred[x],更新maxLength
字符和字符串
- Fields:字段将字符串 s 拆分为一个或多个连续空白字符的每个实例,如 unicode IsSpace 定义的那样,如果 s 仅包含空白,则返回 s 的子字符串切片或空切片。
- Split:
- Join:Join 连接其第一个参数的元素以创建单个字符串。分隔符字符串 sep 放置在结果字符串中的元素之间。
- Contains:包含报告 substr 是否在 s 内。
- Index:Index 返回 s 中 substr 的第一个实例的索引,如果 s 中不存在 substr,则返回 -1。
- ToLower:将符文映射为小写。
- ToUpper:将符文映射为大写。
- Trim:Trim 返回字符串 s 的切片,其中删除了 cutset 中包含的所有前导和尾随 Unicode 代码点。
- TrimRight:TrimRight 返回字符串 s 的一个切片,其中包含在 cutset 中的所有尾随 Unicode 代码点都被删除。
- TrimLeft:TrimLeft 返回字符串 s 的切片,其中包含在切割集中的所有前导 Unicode 代码点都已删除。