字符串和字节数组有密切关系,我们可以轻易的将它们转换成对方:
stra := "the spice must flow"
byts := []byte(stra)
strb := string(byts)
事实上,这也是大多数类型的转换方式。一些函数明确指定一个int32
或者int64
或者相应的无符号类型。你可能会发现你自己不得不像下面一样:
int64(count)
尽管如此,当提到字节数组和字符串时,这可能是你会一直接触的东西。在你使用[]byte(X)
或者string(X)
时务必注意,你创建的是数据的拷贝。这是由于字符串的不可变性。
当字符串有由unicode
字符码runes
组成时。如果你计算字符串的长度时,可能得到的结果和你期待的不同。下面结果是输出3:
fmt.Println(len("�"))
如果你通过range
遍历一个字符串,你将得到runes
,而不是bytes
。当然,当你将一个字符串转换成一个[]byte
时,你将得到正确的数据。