Golang 字符串
在Go语言中,字符串与其他语言如Java、C++、Python等不同。它是一个可变宽度的字符序列,每个字符都由一个或多个使用UTF-8编码的字节表示。或者换句话说,字符串是不可改变的任意字节链(包括零值的字节),或者说 字符串是一个只读的字节片 ,字符串的字节可以用UTF-8编码来表示Unicode文本。
由于UTF-8编码,Golang字符串可以包含世界上任何语言的混合文本,没有任何混乱和页面的限制。一般来说,字符串是用双引号””括起来的,如下面的例子所示。
例子
输出
注意: 字符串可以是空的,但它们不是nil。
字符串字元
在Go语言中,字符串字面意义的创建有两种不同的方式。
- 使用双引号(“”):这里,使用双引号(“”)创建字符串字面。这种类型的字符串支持转义字符,如下表所示,但不跨越多行。这种类型的字符串字面意义在Golang程序中被广泛使用。
Escape character | Description |
---|---|
\ | 反斜线( |
\000 | Unicode字符,具有给定的3位8位八进制代码点 |
\” | 单引号(’)。它只允许在字符字面内使用 |
\” | 双引号(”)。只允许在解释的字符串字面内使用 |
\a | ASCII铃铛(BEL)。 |
\b | ASCII退格符 (BS) |
\f | ASCII formfeed (FF) |
\n | ASCII换行符 (LF) |
\r | ASCII 回车 (CR) |
\t | ASCII tab (TAB) |
\uhhhh | Unicode字符,具有给定的4位16位十六进制代码点。 |
具有给定的8位32位十六进制代码点的Unicode字符。 | |
\v | ASCII垂直制表符 (VT) |
\xhh | 具有给定的2位8位十六进制代码点的Unicode字符。 |
- 使用backticks(“):这里,字符串字头是用backticks(“)创建的,也被称为raw literals。原始字元不支持转义字符,可以跨越多行,并且可以包含除回车键之外的任何字符。一般来说,它用于编写多行信息,在正则表达式和HTML中使用。
示例:
输出:
关于字符串的重要观点
- 字符串是不可变的:在Go语言中,字符串是不可变的,一旦一个字符串被创建,该字符串的值就不能被改变。或者换句话说,字符串是只读的。如果你试图改变,那么编译器会抛出一个错误。
示例:
输出:
- 如何迭代一个字符串?你可以使用for rang循环迭代字符串。这个循环可以遍历一个字符串的Unicode代码点。
语法:
这里,index是存储UTF-8编码的第一个字节的变量,chr存储给定字符串的字符,str是一个字符串。
示例:
输出:
- 如何访问字符串的各个字节?字符串是一个字节,因此,我们可以访问给定字符串的每个字节。
示例:
输出:
- 如何从分片中创建一个字符串?在Go语言中,你可以从字节的分片中创建一个字符串。
示例:
输出:
- 如何找到字符串的长度?在Golang字符串中,你可以使用两个函数找到字符串的长度,一个是len(),另一个是RuneCountInString()。RuneCountInString()函数是由UTF-8包提供的,这个函数返回字符串中符文的总数。而len()函数返回字符串的字节数。
示例:
输出: