5.6 字符串和字节数组

字符串和字节数组有密切关系,我们可以轻易的将它们转换成对方:

  1. stra := "the spice must flow"
  2. byts := []byte(stra)
  3. strb := string(byts)

事实上,这也是大多数类型的转换方式。一些函数明确指定一个int32或者int64或者相应的无符号类型。你可能会发现你自己不得不像下面一样:

  1. int64(count)

尽管如此,当提到字节数组和字符串时,这可能是你会一直接触的东西。在你使用[]byte(X)或者string(X)时务必注意,你创建的是数据的拷贝。这是由于字符串的不可变性。

当字符串有由unicode字符码runes组成时。如果你计算字符串的长度时,可能得到的结果和你期待的不同。下面结果是输出3:

  1. fmt.Println(len("￿"))

如果你通过range遍历一个字符串,你将得到runes,而不是bytes。当然,当你将一个字符串转换成一个[]byte时,你将得到正确的数据。

链接