介绍
在 Go 中,字符串是一个不可变的字节序列。它由一系列字节组成,可以包含任何数据,例如字母、数字和符号。在 Go 语言中,字符串是一种基本类型,使用双引号表示。
字符串定义
定义字符串可以使用双引号或反引号。双引号字符串可以包含转义字符,例如:\\n 表示换行符,\\t 表示制表符等。反引号字符串则可以包含多行文本。
str1 := "Hello, World!"
str2 := `This is
a multi-line
string.`
字符串特点
- 不可变性:字符串一旦被创建,就不能被修改。任何对字符串的操作都会返回一个新的字符串。
- 可以包含任何数据:字符串是由一系列字节组成的,可以包含任何数据,例如字母、数字和符号。
- 使用 UTF-8 编码:在 Go 中,字符串使用 UTF-8 编码,这意味着一个字符可能由多个字节组成。
字符串基本操作
字符串连接
可以使用加号 + 连接两个字符串。
str1 := "Hello,"
str2 := " World!"
result := str1 + str2 // "Hello, World!"
获取字符串长度
可以使用 len() 函数获取字符串的长度。
str := "Hello, World!"
length := len(str) // 13
字符串遍历
可以使用 for range 循环遍历字符串。在循环中,range 返回字符串的 Unicode 码点和对应的字符。
str := "Hello, 世界"
for index, char := range str {
fmt.Printf("字符 %c 的 Unicode 码点为 %U,索引为 %d\n", char, char, index)
}
在遍历字符串时,需要注意字符串中的每个字符可能占用不同数量的字节,特别是在中文场景中。在 Go 中,一个 Unicode 字符可能由多个字节组成。如果需要按照字符遍历字符串,可以使用 for range 循环,该循环会自动处理多字节字符。如果需要按照字节遍历字符串,可以使用 for 循环和字符串的索引操作。但是,需要注意的是,这种方式可能会将多字节字符拆分成多个字节。因此,建议在遍历字符串时,根据具体需求选择遍历方式。
总结下,其实就是:
- 按字符遍历字符串使用
for range循环 - 按字节遍历字符串使用
for循环和字符串索引操作
字符串切片
可以使用切片操作获取字符串的子串。
str := "Hello, World!"
substr1 := str[0:5] // "Hello"
substr2 := str[7:] // "World!"
substr3 := str[:5] // "Hello"
字符串比较
可以使用 == 或 != 运算符比较字符串是否相等。
str1 := "Hello, World!"
str2 := "Hello, World!"
if str1 == str2 {
fmt.Println("字符串相等")
} else {
fmt.Println("字符串不相等")
}