mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 04:22:22 +00:00
fix #229
This commit is contained in:
parent
809c6a5fdc
commit
92c1825c59
@ -310,7 +310,7 @@ func bytes2str(s []byte) (p string) {
|
||||
}
|
||||
```
|
||||
|
||||
因为Go语言的字符串是只读的,无法直接同构构造底层字节数组生成字符串。在模拟实现中通过`unsafe`包获取了字符串的底层数据结构,然后将切片的数据逐一复制到了字符串中,这同样是为了保证字符串只读的语义不会收切片的影响。如果转换后的字符串在生命周期中原始的`[]byte`的变量并不会发生变化,编译器可能会直接基于`[]byte`底层的数据构建字符串。
|
||||
因为Go语言的字符串是只读的,无法直接同构构造底层字节数组生成字符串。在模拟实现中通过`unsafe`包获取了字符串的底层数据结构,然后将切片的数据逐一复制到了字符串中,这同样是为了保证字符串只读的语义不会受切片的影响。如果转换后的字符串在生命周期中原始的`[]byte`的变量并不会发生变化,编译器可能会直接基于`[]byte`底层的数据构建字符串。
|
||||
|
||||
**`[]rune(s)`转换模拟实现**
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user