string - 可以在Go中使用`string()`将字节转换为空字符串吗?

标签 string go type-conversion

是否可以在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/

相关文章:

linux - 异步获取 "slow protocols"的目录条目

c - 如何读取文件和分离值

Python-删除字符串中的重复字母

python - python 中的字符串格式没有按预期工作

string - 如何在字符串指针中找到子字符串

javascript - 用于用 JavaScript 解析的 Golang JSON 编码

c++ - 如何将大于 std::numeric_limits<fundamental_type>::max() 的值传递给函数?

c++ - 将 const char* 转换为 const wchar_t*

mysql - 在 SQL 中比较两封电子邮件的域