31天会用Rust——Day9,结构体

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,
}

效果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37284843/article/details/124172201
今日推荐