diff --git a/eBook/07.6.md b/eBook/07.6.md index 8f3d6f8..6bda2e5 100644 --- a/eBook/07.6.md +++ b/eBook/07.6.md @@ -1,6 +1,6 @@ # 7.6 字符串、数组和切片的应用 -# 7.6.1 从字符串生成字节切片 +## 7.6.1 从字符串生成字节切片 假设 s 是一个字符串(本质上是一个字节数组),那么就可以直接通过 `c := []bytes(s)` 来获取 c 为一个元素类型为字节的切片。另外,您还可以通过 copy 函数来实现:`copy(dst []byte, src string)`. @@ -35,12 +35,20 @@ var s string 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 的子字符串。 -# 7.6.3 字符串和切片的内存结构 +## 7.6.3 字符串和切片的内存结构 + +在内存中,一个字符串实际上是一个双字结构,即一个指向实际数据的指针和记录字符串长度的整数(见图 7.4)。因为指针对用户来说是完全不可见,因此我们可以依旧把字符串看做是一个值类型,也就是一个字符数组。 + +字符串 `string s = "hello"` 和子字符串 `t = s[2:3]` 在内存中的结构可以用下图表示: + +![](images/7.6_fig7.4.png) + +## 7.6.4 修改字符串中的某个字符 -179 +180 diff --git a/eBook/images/7.6_fig7.4.png b/eBook/images/7.6_fig7.4.png new file mode 100644 index 0000000..8c9e677 Binary files /dev/null and b/eBook/images/7.6_fig7.4.png differ