From 92c1825c590aefff64a33df0c6b7976aa5d2dbe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=AF=E7=A8=8B?= Date: Mon, 6 Aug 2018 11:06:03 +0800 Subject: [PATCH] fix #229 --- ch1-basic/ch1-03-array-string-and-slice.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ch1-basic/ch1-03-array-string-and-slice.md b/ch1-basic/ch1-03-array-string-and-slice.md index 2b1008b..163c2d2 100644 --- a/ch1-basic/ch1-03-array-string-and-slice.md +++ b/ch1-basic/ch1-03-array-string-and-slice.md @@ -310,7 +310,7 @@ func bytes2str(s []byte) (p string) { } ``` -因为Go语言的字符串是只读的,无法直接同构构造底层字节数组生成字符串。在模拟实现中通过`unsafe`包获取了字符串的底层数据结构,然后将切片的数据逐一复制到了字符串中,这同样是为了保证字符串只读的语义不会收切片的影响。如果转换后的字符串在生命周期中原始的`[]byte`的变量并不会发生变化,编译器可能会直接基于`[]byte`底层的数据构建字符串。 +因为Go语言的字符串是只读的,无法直接同构构造底层字节数组生成字符串。在模拟实现中通过`unsafe`包获取了字符串的底层数据结构,然后将切片的数据逐一复制到了字符串中,这同样是为了保证字符串只读的语义不会受切片的影响。如果转换后的字符串在生命周期中原始的`[]byte`的变量并不会发生变化,编译器可能会直接基于`[]byte`底层的数据构建字符串。 **`[]rune(s)`转换模拟实现**