From e41820109f1abbe5589467252882bc7d1f2004eb Mon Sep 17 00:00:00 2001 From: TomCao Date: Fri, 2 Mar 2018 14:33:05 +0800 Subject: [PATCH] typo --- ch1-basic/ch1-03-array-string-and-slice.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ch1-basic/ch1-03-array-string-and-slice.md b/ch1-basic/ch1-03-array-string-and-slice.md index d9d98b4..5ebcfb3 100644 --- a/ch1-basic/ch1-03-array-string-and-slice.md +++ b/ch1-basic/ch1-03-array-string-and-slice.md @@ -334,9 +334,9 @@ func str2runes(s []byte) []rune { func runes2string(s []int32) string { var p []byte buf := make([]byte, 3) - for _, r := range { + for _, r := range s { n := utf8.EncodeRune(buf, r) - p = append(p, buf[:n]) + p = append(p, buf[:n]...) } return string(p) } @@ -378,7 +378,7 @@ var ( ) ``` -和数组一样,内置的`len`函数返回切片中有效元素的长度,内置的`cap`函数返回切片容量大小,容量必须大于或等于切片的长度。也可以通过`reflect.SliceHeader`结构访问切片的信息(只是为了说明字符串的结构,并不是推荐的做法)。切片可以和`nil`进行比较,只有当切片底层数据指针为空时切片本身为`nil`,这时候切片的长度和容量信息将是无效的。如果有切片的底层数据指针为空,但是长度和容量不为0的情况,那么说明切片本身已经被损坏了(比如直接通过`reflect.SliceHeader`或`unsafe`包对切片作了不正确的修改)。 +和数组一样,内置的`len`函数返回切片中有效元素的长度,内置的`cap`函数返回切片容量大小,容量必须大于或等于切片的长度。也可以通过`reflect.SliceHeader`结构访问切片的信息(只是为了说明切片的结构,并不是推荐的做法)。切片可以和`nil`进行比较,只有当切片底层数据指针为空时切片本身为`nil`,这时候切片的长度和容量信息将是无效的。如果有切片的底层数据指针为空,但是长度和容量不为0的情况,那么说明切片本身已经被损坏了(比如直接通过`reflect.SliceHeader`或`unsafe`包对切片作了不正确的修改)。 遍历切片的方式和遍历数组的方式类似: @@ -437,7 +437,7 @@ a = append(a[:i], append([]int{1,2,3}, a[i:]...)...) // 在第i个位置插入 ```go a = append(a, 0) // 切片扩展1个空间 copy(a[i+1:], a[i:]) // a[i:]向后移动1个位置 -s[i] = x // 设置新添加的元素 +a[i] = x // 设置新添加的元素 ``` 第一句`append`用于扩展切片的长度,为要插入的元素留出空间。第二句`copy`操作将要插入位置开始之后的元素向后挪动一个位置。第三句真实地将新添加的元素赋值到对应的位置。操作语句虽然冗长了一点,但是相比前面的方法,可以减少中间创建的临时切片。