Rust—结构体
结构体
//定义结构体Student
struct Student{ name:&'static str, score:i32, } fn main(){ let score = 59; let username ="zhangsan"; let mut student = Student{ score, name:username, }; student.score = 60; println!("name:{},score:{}",student.name,student.score); let student2 = Student{ name:"lisi", ..student //有别于其他编程语言地方 }; println!("name:{},score:{}",student2.name,student2.score); }
输出结果:

a.特殊结构体之元组结构体
只有字段类型,没有字段名称的特殊结构体
如定义颜色结构体:
struct Color(i32,i32,i32); let balck = Color(0,0,0);
定义坐标结构体:
struct Site(f64,f64,f64); let location = Site(1.0,1.0,1.0);
b.特殊结构体之单元结构体
无任何成员
如struct just_unit_struct;
c.整个结构体输出
#[derive(Debug)] //{:?}使用必需语句
struct Student{
name:&'static str,
score:i32,
}
fn main(){
let score = 59;
let username ="zhangsan";
let mut student = Student{
score,
name:username,
};
student.score = 60;
println!("name:{},score:{}",student.name,student.score);
let student2 = Student{
name:"lisi",
..student
};
println!("name:{},score:{}",student2.name,student2.score);
//输出结构体student
println!("struct student is {:?}",&student);
}
输出结果:

d.结构体方法
const pi:f64 = 3.141592f64;
#[derive(Debug)]
struct Point(f64,f64);
#[derive(Debug)]
struct Circle{
Radius:f64,
center_point:Point,
}
//结构体方法定义,拥有&self参数
impl Circle{
fn area(&self)->f64{
self.Radius*self.Radius*pi
}
}
fn main(){
let radius1:f64 = 1f64;
let point1= Point(2f64,2f64);
//println!("circle center point is ({},{})",point1.0,point1.1); //放在此处OK
let circle1 = Circle{
Radius:radius1,
center_point:point1,
};
//println!("circle center point is ({},{})",point1.0,point1.1); //放在此处会报错,point1已经不存在了
println!("circle center point is ({},{})",circle1.center_point.0,circle1.center_point.1);
println!("{:?} area is {}",circle1,circle1.area());
}
输出结果:

e.结构体关联函数
const pi:f64 = 3.141592f64;
#[derive(Debug)]
struct Point(f64,f64);
///结构体关联函数
impl Point{
fn create(x:f64,y:f64)->Point{
Point(x,y)
}
}
#[derive(Debug)]
struct Circle{
Radius:f64,
center_point:Point,
}
///结构体方法
impl Circle{
fn area(&self)->f64{
self.Radius*self.Radius*pi
}
}
fn main(){
let radius1:f64 = 1f64;
let point1= Point(2f64,2f64);
let point2 = Point::create(1.0, 2.0);
//println!("circle center point is ({},{})",point1.0,point1.1); //放在此处OK
let circle1 = Circle{
Radius:radius1,
center_point:point1,
};
//println!("circle center point is ({},{})",point1.0,point1.1); //放在此处会报错,point1已经不存在了
println!("circle center point1 is ({},{})",circle1.center_point.0,circle1.center_point.1);
println!("point2 is ({},{})",point2.0,point2.1);
println!("{:?} area is {}",circle1,circle1.area());
}
运行结果:

------------------------------------
承接
**视觉检测软件开发及调试
**工业软件开发
**上位机软件开发
wechat:luoran2024
qq:565934058
email:taoyuansu@qq.com
海量教育资源及影视资源下载
微信公众号:EFun科技
------------------------------------

浙公网安备 33010602011771号