ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Golang 字符串字面量表示方法

Golang 字符串字面量表示方法

文章目录

  • 1.普通字符串字面量
  • 2.原始字符串字面量
  • 3.字节字符串字面量
  • 4.码值表示字符串字面量
    • Unicode 转义序列
    • UTF8 转义序列
      • 十六进制序列
      • 八进制序列
  • 5.小结
  • 参考文献

在 Go 语言中,字符串字面量可以通过不同的方式来表示。主要有三种形式:

1.普通字符串字面量

普通字符串字面量(Double-Quoted String Literals)使用双引号包围。

这种形式允许转义字符,例如 \n(换行)、\t(制表符)等。

str:="Hello, World!\nThis is a new line."fmt.Println(str)

运行输出:

Hello, World! This is a new line.

2.原始字符串字面量

原始字符串字面量(Raw String Literals)使用反引号包围。

原始字符串字面量不处理转义字符,所有的字符,包括换行和反斜杠,都会被原样保留。这对于需要包含多行文本或特殊字符的情况非常有用。

rawStr:=`Hello, World! This is a raw string literal. It can span multiple lines. Special characters like \n and \t are not processed.`fmt.Println(rawStr)

运行输出:

Hello, World! This is a raw string literal. It can span multiple lines. Special characters like \n and \t are not processed.

3.字节字符串字面量

字节字符串字面量(Byte Slice Literals)使用字节切片[]byte来表示。

这种形式通常用于处理原始字节数据,可以使用普通字符串字面量或原始字符串字面量来初始化。

byteStr:=[]byte("Hello, World!")// 普通字符串字面量fmt.Println(string(byteStr))byteRawStr:=[]byte(`Hello, World! This is a raw byte string.`)// 原始字符串字面量fmt.Println(string(byteRawStr))

运行输出:

Hello, World! Hello, World! This is a raw byte string.

4.码值表示字符串字面量

Unicode 转义序列

在 Go 语言中,可以使用 Unicode 码值来书写字符串字面量。

Unicode 码值使用 \u 或 \U 转义序列表示。

  • \u 形式:后面跟四个十六进制数字,表示一个 Unicode 字符。
  • \U 形式:后面跟八个十六进制数字,表示一个 Unicode 字符。
// 使用 Unicode 转义序列表示字符串str1:="\u4F60\u597D"// 你好fmt.Println(str1)str2:="\U00004E16\U0000754C"// 世界fmt.Println(str2)

运行输出:

你好 世界

UTF8 转义序列

十六进制序列

在 Go 语言中,UTF-8 字符也可以使用 \x 来表示,这是另一种转义序列形式,专门用于表示字节的十六进制值。

使用 \x 表示法时,后面可以跟随两个十六进制数字,表示一个字节的值,这在处理原始字节数据时非常有用。

\xe4、\xbd 和 \xa0 组合起来表示汉字“你”。
\xe5、\xa5 和 \xbd 组合起来表示汉字“好”。
\xe4、\xb8 和 \x96 组合起来表示汉字“世”。
\xe7、\x95 和 \x8c 组合起来表示汉字“界”。

str1:="\xe4\xbd\xa0\xe5\xa5\xbd"// 你好fmt.Println(str1)str2:="\xe4\xb8\x96\xe7\x95\x8c"// 世界fmt.Println(str2)

运行输出:

你好 世界

八进制序列

UTF-8 字符也可以使用 \ 之后跟随三个八进制数字(0-7)表示一个 byte 值。

\344\275\240 组合起来表示汉字“你”。
\345\245\275 组合起来表示汉字“好”。
\344\270\226 组合起来表示汉字“世”。
\347\225\214 组合起来表示汉字“界”。

str1:="\344\275\240\345\245\275"// 你好fmt.Println(str1)str2:="\344\270\226\347\225\214"// 世界fmt.Println(str2)

运行输出:

你好 世界

5.小结

在 Go 语言中,字符串字面量可以通过多种方式表示,每种方式都有其特定的用途和特点。

如果使用字符的码值表示字符串,那么可以用 Unicode 转义序列和 UTF8 转义序列。

注意:rune 类型的零值常用'\000'、'\x00'或'\u0000'等来表示。


参考文献

String literals - The Go Programming Language Specification
基本类型和它们的字面量表示 - Go语言101

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进