/* ===== 模块5:复合类型 ===== * test10_struct — 结构体 * 难度:2/5 * 验证点:struct 定义、字段访问、内联 type、嵌套结构体 */ type Pair = struct { a: i32, b: i32, } fn main() i32 { /* struct 字段访问 */ var p: Pair; p.a = 1; p.b = 2; if p.a != 1 { ret 1; } if p.b != 2 { ret 2; } /* 同一类型复用 */ var p2: Pair; p2.a = 10; p2.b = 20; if p2.a + p2.b != 30 { ret 3; } /* 不影响其他实例 */ if p.a != 1 { ret 4; } /* 内联 type 定义(在函数内) */ type Triple = struct { x: i32, y: i32, z: i32, } var t: Triple; t.x = 5; t.y = 10; t.z = 15; if t.x + t.y + t.z != 30 { ret 5; } /* 结构体字段运算 */ var calc: Pair; calc.a = 7; calc.b = 3; var r := calc.a * calc.b + calc.a - calc.b; if r != 25 { ret 6; } /* 结构体嵌套 */ type Outer = struct { inner: Inner, extra: i32, type Inner = struct { val: i32, } } var o: Outer; o.inner.val = 42; o.extra = 58; if o.inner.val != 42 { ret 7; } if o.extra != 58 { ret 8; } ret 0; }