1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 12:32:21 +00:00
This commit is contained in:
启程 2018-08-06 11:06:03 +08:00
parent 809c6a5fdc
commit 92c1825c59
No known key found for this signature in database
GPG Key ID: 49E258DF3254C886

View File

@ -310,7 +310,7 @@ func bytes2str(s []byte) (p string) {
}
```
因为Go语言的字符串是只读的无法直接同构构造底层字节数组生成字符串。在模拟实现中通过`unsafe`包获取了字符串的底层数据结构,然后将切片的数据逐一复制到了字符串中,这同样是为了保证字符串只读的语义不会切片的影响。如果转换后的字符串在生命周期中原始的`[]byte`的变量并不会发生变化,编译器可能会直接基于`[]byte`底层的数据构建字符串。
因为Go语言的字符串是只读的无法直接同构构造底层字节数组生成字符串。在模拟实现中通过`unsafe`包获取了字符串的底层数据结构,然后将切片的数据逐一复制到了字符串中,这同样是为了保证字符串只读的语义不会切片的影响。如果转换后的字符串在生命周期中原始的`[]byte`的变量并不会发生变化,编译器可能会直接基于`[]byte`底层的数据构建字符串。
**`[]rune(s)`转换模拟实现**