学习Golang中字符串的详细指南

66 阅读2分钟

学习Golang中字符串

Go中的字符串

字符串代表一串字节。更确切地说,是uint8 整数的一个只读片断。

它们的主要用途是表示文本。这些文本通常,但不一定,是以UTF-8编码的。在Go中,字符串也可以用来表示任何编码的文本,也可以表示原始字节,不一定对应于文本。

需要注意的是,字符串可以是空的(即长度为0),也可以是任意长的(大到可以装入内存)。

字符串字元

Go 提供了两种在源代码中声明字符串值的方法:解释或原始。

解释的字符串

引号 (") 字符表示解释的字符串字面,它们有以下特点:

  • 它们可以跨越源文件中的一个行(即它们不能包含一个未escaped的换行字符)。
  • 它们可以包含任何其他字符,除了未转义的双引号。
  • 反斜线转义是可以解释的。

例子:

"foo"                  // The word foo
"foo\nbar"             // foo, newline, and bar
"Saudações"            // UTF-8 text
"Sauda\u00E7\u00F5es"  // Unicode code points (same text as above)

原始字符串

反斜线 (`) 字符表示一个 "原始 "字符串字面。它们有这些特点。

  • 它们可以跨越源代码中的多行。
  • 源文件中的原始换行符成为字符串常量中的换行符。
  • 它们不解释转义序列。
  • 它们不能包括反斜线(甚至不能通过转义,见上文)。

例子:

`line1
line2
line3`

声明字符串变量

字符串变量可以使用string 类型明确声明:

1var season string

然后可以像这样给它分配一个字符串字面:

1season = "Autumn"

字符串变量也可以用:= 速记符号来声明。这将用一个隐含的类型声明它们,并分配一个初始值,像这样:

package main

import (
  "fmt"
)

func main() {
  season := "Autumn"
  fmt.Println(season)
}

上面的代码打印出来了:

Autumn

字符串连接

+ 操作符将把两个字符串连接起来。两边不加额外的空格。

比如说:

package main

import (
  "fmt"
)

func main() {
  wish := "Happy"
  season := "Autumn"
  greeting := wish + " " + season + "!"
  fmt.Println(greeting)
}

这就创建了一个新的字符串值,也就是表达式的结果,并将其分配给greeting 变量。

上面的代码打印出来了。

Happy Autumn!