diff --git a/src/basic/compound-type/string-slice.md b/src/basic/compound-type/string-slice.md index e7a4e563..42ee90d6 100644 --- a/src/basic/compound-type/string-slice.md +++ b/src/basic/compound-type/string-slice.md @@ -394,7 +394,7 @@ string_replace_range = "I like Rust!" #### 删除 (Delete) -与字符串删除相关的方法有 4 个,他们分别是 `pop()`,`remove()`,`truncate()`,`clear()`。这四个方法仅适用于 `String` 类型。 +与字符串删除相关的方法有 4 个,它们分别是 `pop()`,`remove()`,`truncate()`,`clear()`。这四个方法仅适用于 `String` 类型。 1、 `pop` —— 删除并返回字符串的最后一个字符 @@ -683,7 +683,7 @@ for b in "中国人".bytes() { 那么问题来了,为啥 `String` 可变,而字符串字面值 `str` 却不可以? -就字符串字面值来说,我们在编译时就知道其内容,最终字面值文本被直接硬编码进可执行文件中,这使得字符串字面值快速且高效,这主要得益于字符串字面值的不可变性。不幸的是,我们不能为了获得这种性能,而把每一个在编译时大小未知的文本都放进内存中(你也做不到!),因为有的字符串是在程序运行得过程中动态生成的。 +就字符串字面值来说,我们在编译时就知道其内容,最终字面值文本被直接硬编码进可执行文件中,这使得字符串字面值快速且高效,这主要得益于字符串字面值的不可变性。不幸的是,我们不能为了获得这种性能,而把每一个在编译时大小未知的文本都放进内存中(你也做不到!),因为有的字符串是在程序运行的过程中动态生成的。 对于 `String` 类型,为了支持一个可变、可增长的文本片段,需要在堆上分配一块在编译时未知大小的内存来存放内容,这些都是在程序运行时完成的: