是否可以在Go中将一个字节强制转换为空字符串?我已经尝试过string(0)
,但是结果是长度为1的string
:
emptyString := ""
nullByte := 0
fmt.Printf("%T, %v - %T, %v", emptyString, len(emptyString), string(nullByte), len(string(nullByte)))
输出:
string, 0 - string, 1
我想要这样做的原因是,我得到了一个函数,该函数接受
byte
并将其转换为string
,并且我想为此函数提供空字符串。
最佳答案
空字符串""
具有0个字节。如果您有一个字节并将其转换为string
,则结果字符串将具有一个等于该1字节的rune
(甚至可以在UTF-8中将其编码为多个字节)。 Spec: Conversions:
将有符号或无符号整数值转换为字符串类型会产生一个包含整数的UTF-8表示形式的字符串。
因此,显然无论字节大小,您都无法将字节转换为具有0个字节的字符串。转换“最有希望的候选者”:byte(0)
将导致一个字符串,其中包含一个0
字节:"\x00"
或[]byte{0}
(在Go Playground上尝试)。
还要注意,在您的示例中,您正在转换int
(nullByte
的类型为int
),但是该规范中引用相同的部分仍然适用。
关于string - 可以在Go中使用`string()`将字节转换为空字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59444103/