字符串
在GO语言中,字符串是不可变的字节序列,只能通过重新赋值改变变量的值。
如下代码:
因为在GO语言中字符串的底层是字节数组,
上述代码字符串中底层字节数组如下:
[230 152 165 230 177 159 232 138 177 230 156 136 229 164 156]
每个字符占3个字节,所以取第一个字符的索引为 [:3]。
因为GO语言的字符串是不可变的,上述代码会触发宕机异常:
cannot assign to str[:3] (value of type string)
字符串字面量
1.字符串字面量
字符串字面量是在双引号之间的字节序列。字符串字面量中出现以下字符会转义。
例如字符串字面量中包含字符\n,则在输出字符串时,并不会打印出\n,而是在这个位 置换行。
具体的转义序列如下:
转移序列 | 含义 |
\a | “警告”或 |
\b | 退格符 |
\f | 换页符 |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\v | 垂直制表符 |
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
2.原生字符串字面量
原生字符串字面量在反引号之间的字节序列。原生字符串中的转义序列不会生效,所见即所得。并且原生字符串字面量支持多行,会保留换行符,删除回车符,保证在所有平台上保持一致。原生字符串字面量适用与正则、HTML模板、JSON字面量、命令行提示信息、以及多行文本等场景。
符文类型
字符串中的每一个元素称为字符。GO语言中字符有两种:
字节类型(byte),相当于uint8类型,代表一个ASCII字符
符文类型(rune),相当于int32类型,代表一个UTF-8字符
底层结构
字符串是一个结构体,包含一个指向字符串字面量的指针和字符串字面量的字节长度。
结构如图所示
其中长度为字节数组的字节数。
字符串声明与赋值
1.声明
在GO语言中声明变量会根据变量类型赋默认值。例如,字符串的默认值为空字符串
代码如下:
输出:
2.赋值
先声明后赋值
短变量声明
字符串基本使用
1.字符串长度
通过len()方法获取字符串字节数
代码:
2.下标访问操作
获取字符串第一个字符
代码
* fmt.Println() 使用默认的格式将传入的参数写到标准输出
* str[:3] 为区字符串的第一个字符
3.遍历字符串
若字符串中不止有ASCII编码
* 通过range遍历会得到rune类型的字符
* %c输出给定整数的对应字符
4.字符串切割
输出:
通过strings包中的Split方法,传入参数字符串和切割的字符。