面试题答案
一键面试struct Point {
x: i32,
y: i32,
}
impl Point {
// 实例方法
fn distance(&self) -> f64 {
(self.x.pow(2) + self.y.pow(2)) as f64).sqrt()
}
// 关联函数
fn new(x: i32, y: i32) -> Point {
Point { x, y }
}
}
impl块组织原则
- 实例方法:
- 实例方法第一个参数总是
&self
(可变引用&mut self
用于修改实例),表示方法调用的对象实例。在distance
方法中,&self
允许我们访问结构体Point
的字段x
和y
来进行距离计算。
- 实例方法第一个参数总是
- 关联函数:
- 关联函数不以
self
作为参数,它们通常用于创建实例(如new
函数)或执行与结构体相关但不依赖于特定实例的操作。调用关联函数使用结构体名::函数名
的形式,例如let p = Point::new(3, 4);
。
- 关联函数不以