求剧情
Go语言学习笔记 · 第五节

《Go语言学习笔记》第五节

本节介绍Go语言中字符串、数组、切片、字典和结构体的特性与性能要点。

本节介绍Go语言中字符串、数组、切片、字典和结构体的特性与性能要点。

字符串以UTF-8字节序列存储,无NULL结尾,支持索引与子串切片,但不可变,修改需转换为[]byte或[]rune再转回,此过程会重新分配内存。可用unsafe指针转换避免复制以提升性能。用加号拼接字符串每次都会重新分配内存,应改用strings.Join或编译器优化的连缀表达式,一次性预分配内存。rune是int32别名,用于存储Unicode码点;字节数组未必是合法UTF-8,可用unicode包的RuneCountInString统计真实字符数。

数组长度是类型的一部分,赋值与传参都会复制全部数据,可用指针或切片避免。切片是引用底层数组的只读结构体,由指针、len、cap组成,可通过make创建、reslice切分、append追加(超cap时重新分配),元素间可重叠复制,不支持比较。字典是引用类型,key须支持相等运算,并发读写会被运行时检测并导致崩溃,需用RWMutex同步;迭代无序,写nil字典会出错,创建时预留容量可提升性能。结构体将不同类型的命名字段打包,字段名与顺序属类型的一部分,推荐用命名方式初始化,也支持匿名结构类型。

‹ 上一章目录下一章 ›

全部 17 章