面试题答案
一键面试代码实现
fn main() {
let s = "你好,世界";
for c in s.chars() {
println!("{}", c);
}
}
不能像遍历字节数组一样遍历的原因
- UTF - 8 编码特性:UTF - 8是一种变长编码,一个字符可能由1到4个字节表示。例如,英文字母通常用1个字节表示,而中文字符可能用3个字节表示。如果简单地像遍历字节数组一样遍历字符串,会将一个字符拆分成多个部分,导致得到的不是完整的字符。
- 语义理解:Rust的
String
类型是基于UTF - 8编码的,chars()
方法会按照字符语义来解析字符串,确保每次迭代得到的都是一个完整的Unicode字符,而不仅仅是字节序列。这样能正确处理各种语言的字符,符合开发者对字符遍历的常规期望。