1,简单使用
结构体,能将相关联的数据存放到一起。
fn main() {
let a = User {
name: String::from("abc"),
password: String::from("123"),
active: true,
};
println!("{},{},{}", a.name, a.password, a.active);
}
struct User {
name: String,
password: String,
active: bool,
}
abc,123,true
2,修改属性的值
要修改结构体对象,首先要是mut的类型,然后赋值就行。
fn main() {
let mut a = User {
name: String::from("abc"),
password: String::from("123"),
active: true,
};
println!("{},{},{}", a.name, a.password, a.active);
a.active = false;
println!("{},{},{}", a.name, a.password, a.active);
}
abc,123,true
abc,123,false
3,简写
变量与结构体属性同名时,可以简写。
常用于方法创建实例。
fn main() {
let name = String::from("abc");
let password = String::from("123");
let active = true;
let a = User {
name,
password,
active,
};
println!("{},{},{}", a.name, a.password, a.active);
}
4,从结构体创建结构体
复用一个结构体。
fn main() {
let a = User {
name: String::from("abc"),
password: String::from("123"),
active: true,
};
let b = User {
..a };
println!("{},{},{}", b.name, b.password, b.active);
}
abc,123,true
可以同时修改一部分的值。
fn main() {
let a = User {
name: String::from("abc"),
password: String::from("123"),
active: true,
};
let b = User {
active: false,
..a
};
println!("{},{},{}", b.name, b.password, b.active);
}
5,结构体的方法
简单使用。
方法可以带参数&self代表当前实例。
fn main() {
let li_lei = User {
name: "李雷".to_string(),
age: 16,
};
li_lei.say();
}
struct User {
name: String,
age: i32,
}
impl User {
fn say(&self) {
println!("我叫{},今年{}岁", &self.name, &self.age);
}
}
选修:元组结构体
结构体,但属性没有名字。
fn main() {
let a = Color(211, 222, 233);
println!("{},{},{}", a.0, a.1, a.2);
}
struct Color(i32, i32, i32);
211,222,233
选修:空结构体
空空如也。没属性,但是可以有方法。
fn main() {
let a = A {
};
}
struct A {
}
选修:打印结构体
fn main() {
let a = User {
name: String::from("abc"),
password: String::from("123"),
active: true,
};
println!("{:#?}", a);
}
#[derive(Debug)]
struct User {
name: String,
password: String,
active: bool,
}
效果: