/* ===== 模块5:复合类型 ===== * test09_slices — 切片 * 难度:2/5 * 验证点:arr[begin..end] 创建切片、arr[begin..] 到末尾、 * 切片索引访问、slice.len、slice.ptr */ fn main() i32 { /* 从数组创建切片 */ var arr: [5]i32 = [5]i32{10, 20, 30, 40, 50}; var slice: []i32 = arr[1..4]; /* 切片长度 */ if slice.len != 3 { ret 1; } /* 切片元素访问 */ if slice[0] != 20 { ret 2; } if slice[1] != 30 { ret 3; } if slice[2] != 40 { ret 4; } /* 省略结束值:arr[begin..] */ var full: []i32 = arr[0..]; if full.len != 5 { ret 5; } if full[0] != 10 { ret 6; } if full[4] != 50 { ret 7; } /* 从开头到中间 */ var head: []i32 = arr[0..3]; if head.len != 3 { ret 8; } if head[0] != 10 { ret 9; } /* 切片遍历(配合 for)*/ var nums: [3]i32 = [3]i32{100, 200, 300}; var sl: []i32 = nums[0..]; var total: i32 = 0; var i: i32 = 0; while i < sl.len { total = total + sl[i]; i = i + 1; } if total != 600 { ret 10; } ret 0; }