字符串与 [] 字节
字符串定义:
string
是所有 8 位字节字符串的集合,通常但不一定代表 UTF-8 编码的文本。字符串可以为空,但不能为零。字符串类型的值是不可变的。
字节定义:
byte 是 uint8 的别名,在所有方面都等同于 uint8。按照惯例,它用于区分字节值和 8 位无符号整数值。
这是什么意思?
[]byte
是byte
一片。切片可以为空。
string
元素是 unicode 字符,可以有超过 1 个字节。
string
元素保持数据(编码)的含义,[]bytes
而不是。
- 相等运算符是为
string
类型定义的,但不是为slice
类型定义的。
如您所见,它们是具有不同属性的两种不同类型。有一篇很棒的博客文章解释了不同的字符串相关类型 [1]
关于您在代码段中遇到的问题。
请记住,它会in.ReadBytes(char)
返回一个char
包含包含的字节切片。所以在你的代码中input
以'\ n'结尾。如果您希望您的代码以所需的方式工作,请尝试以下操作:
if string(input) == "example\n" { // or "example\r\n" when on windows
os.Exit(0)
}
还要确保您的终端代码页与您的.go源文件相同。请注意不同的结束行样式(Windows 使用“\r\n”),标准 go 编译器在内部使用 utf8。
[1]字符串处理的 Go 数据类型比较。