一尘不染

无论如何,在Go中创建以null结尾的字符串吗?

go

无论如何,string在Go中创建空终止吗?

我目前正在尝试的是a:="golang\0"但它显示编译错误:

non-octal character in escape sequence: "

阅读 451

收藏
2020-07-02

共1个答案

一尘不染

规格:字符串文字:

引号之间的文本构成文字的值,反斜杠转义与符文文字中的解释相同(除非\'是非法且\"合法),并具有相同的限制。三位数字的八进制(\nnn)和两位数字的十六进制(\xnn)转义符表示所得字符串的各个字节。所有其他转义符表示单个字符的UTF-8编码(可能是多字节)。

因此,这\0是一个非法序列,您必须使用3个八进制数字:

s := "golang\000"

或使用十六进制代码(2个十六进制数字):

s := "golang\x00"

或unicode序列(4个十六进制数字):

s := "golang\u0000"

例:

s := "golang\000"
fmt.Println([]byte(s))
s = "golang\x00"
fmt.Println([]byte(s))
s = "golang\u0000"
fmt.Println([]byte(s))

输出:全部以0码字节结尾(在Go Playground上尝试)。

[103 111 108 97 110 103 0]
[103 111 108 97 110 103 0]
[103 111 108 97 110 103 0]
2020-07-02