Go 学习笔记:string

142 阅读2分钟

介绍

在 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("字符串不相等")
}