struct Point { x: i32, y: i32 }
A: let p = Point { x: 10, y: 20 };
B: let p = Point ( 10, 20 );
C: let p = Point [ x: 10, y: 20 ];
D: let p = new Point { x: 10, y: 20 };
A
B
C
D
答案解析:
答案:A
命名字段结构体实例化使用花括号{},指定字段名和值。
Rust不使用new关键字,也不使用圆括号或方括号来实例化命名字段结构体。
第6题 (简答题)
在Rust中,为结构体实现方法需要使用哪个关键字?
答案解析:
答案:impl
使用impl关键字为结构体实现方法。
例如:impl Point { fn new(x: i32, y: i32) -> Point { ... } }
第7题 (选择题)
结构体方法的第一个参数通常是什么?
self
&self
&mut self
以上都可能
答案解析:
答案:以上都可能
self:获取所有权,方法调用后实例不可再使用。
&self:不可变借用,可以读取但不能修改。
&mut self:可变借用,可以修改实例。
选择哪种取决于方法的具体需求。
第8题 (判断题)
关联函数(Associated Functions)必须通过结构体实例来调用。
正确
错误
答案解析:
答案:错误
关联函数不需要实例,通过结构体名称和::语法调用。
例如:String::new()、Vec::new()等都是关联函数。
关联函数通常用作构造函数或工厂方法。
第9题 (选择题)
下面哪个是正确的结构体更新语法?
let user1 = User { name: "Alice".to_string(), age: 30 };
A: let user2 = User { name: "Bob".to_string(), ..user1 };
B: let user2 = User { name: "Bob".to_string(), ...user1 };
C: let user2 = User { name: "Bob".to_string(), &user1 };
D: let user2 = User { name: "Bob".to_string(), *user1 };