mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-11 22:06:51 +08:00
精校:7.6
This commit is contained in:
1
TOC.md
1
TOC.md
@@ -59,3 +59,4 @@
|
|||||||
- 7.3 [For-range 结构](eBook/07.3.md)
|
- 7.3 [For-range 结构](eBook/07.3.md)
|
||||||
- 7.4 [切片重组(reslice)](eBook/07.4.md)
|
- 7.4 [切片重组(reslice)](eBook/07.4.md)
|
||||||
- 7.5 [切片的复制与追加](eBook/07.5.md)
|
- 7.5 [切片的复制与追加](eBook/07.5.md)
|
||||||
|
- 7.6 [字符串、数组和切片的应用](eBook/07.6.md)
|
@@ -37,7 +37,7 @@ b = append(b, s...)
|
|||||||
|
|
||||||
## 7.6.2 获取字符串的某一部分
|
## 7.6.2 获取字符串的某一部分
|
||||||
|
|
||||||
使用 `substr := str[start:end]` 可以从字符串 str 获取到从索引 start 开始到 end-1 位置的子字符串。同样的,`str[start:]` 则表示获取从 start 开始到 len(str)-1 位置的子字符串。而 `str[:end]` 表示获取从 0 开始到 end-1 的子字符串。
|
使用 `substr := str[start:end]` 可以从字符串 str 获取到从索引 start 开始到 `end-1` 位置的子字符串。同样的,`str[start:]` 则表示获取从 start 开始到 `len(str)-1` 位置的子字符串。而 `str[:end]` 表示获取从 0 开始到 `end-1` 的子字符串。
|
||||||
|
|
||||||
## 7.6.3 字符串和切片的内存结构
|
## 7.6.3 字符串和切片的内存结构
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ b = append(b, s...)
|
|||||||
|
|
||||||
字符串 `string s = "hello"` 和子字符串 `t = s[2:3]` 在内存中的结构可以用下图表示:
|
字符串 `string s = "hello"` 和子字符串 `t = s[2:3]` 在内存中的结构可以用下图表示:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 7.6.4 修改字符串中的某个字符
|
## 7.6.4 修改字符串中的某个字符
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ s2 := string(c) // s2 == "cello"
|
|||||||
|
|
||||||
## 7.6.5 字节数组对比函数
|
## 7.6.5 字节数组对比函数
|
||||||
|
|
||||||
下面的 `Compare` 函数会返回两个字节数组字典顺序的整数对比结果,即 `0 if a ==b, -1 if a < b, 1 if a > b`。
|
下面的 `Compare` 函数会返回两个字节数组字典顺序的整数对比结果,即 `0 if a == b, -1 if a < b, 1 if a > b`。
|
||||||
|
|
||||||
```go
|
```go
|
||||||
func Compare(a, b[]byte) int {
|
func Compare(a, b[]byte) int {
|
||||||
@@ -150,7 +150,7 @@ func FindDigits(filename string) []byte {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
这段代码可以顺利运行,但返回的 []byte 指向的底层是整个文件的数据。只要该返回的切片不被释放,垃圾回收器就不能释放整个文件所占用的内存。换句话说,一点点有用的数据却占用了整个文件的内存。
|
这段代码可以顺利运行,但返回的 `[]byte` 指向的底层是整个文件的数据。只要该返回的切片不被释放,垃圾回收器就不能释放整个文件所占用的内存。换句话说,一点点有用的数据却占用了整个文件的内存。
|
||||||
|
|
||||||
想要避免这个问题,可以通过拷贝我们需要的部分到一个新的切片中:
|
想要避免这个问题,可以通过拷贝我们需要的部分到一个新的切片中:
|
||||||
|
|
||||||
@@ -174,11 +174,11 @@ func FindDigits(filename string) []byte {
|
|||||||
|
|
||||||
**练习 7.14**
|
**练习 7.14**
|
||||||
|
|
||||||
编写一个程序,要求能够反转字符串,即将 “Google” 转换成 “elgooG”(提示:使用 []byte 类型的切片)。
|
编写一个程序,要求能够反转字符串,即将 “Google” 转换成 “elgooG”(提示:使用 `[]byte` 类型的切片)。
|
||||||
|
|
||||||
如果您使用两个切片来实现反转,请再尝试使用一个切片(提示:使用交换法)。
|
如果您使用两个切片来实现反转,请再尝试使用一个切片(提示:使用交换法)。
|
||||||
|
|
||||||
如果您想要反转 Unicode 编码的字符串,请使用 []int 类型的切片。
|
如果您想要反转 Unicode 编码的字符串,请使用 `[]int` 类型的切片。
|
||||||
|
|
||||||
**练习 7.15**
|
**练习 7.15**
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user