广州网络营销服务公司,宁波seo,wordpress背景板,网站建设可行分析性报告第一反应#xff0c;Rust结构体跟python的很像#xff0c;不知道感觉对不对#xff1b; 书中提到第一反应#xff0c;Rust结构体跟python的很像#xff0c;不知道感觉对不对#xff1b; 书中提到#xff1a;结构体是一种自定义数据类型#xff0c;它允许命名多个相关的…第一反应Rust结构体跟python的很像不知道感觉对不对 书中提到第一反应Rust结构体跟python的很像不知道感觉对不对 书中提到结构体是一种自定义数据类型它允许命名多个相关的值并将他们组成一个有机的结合体。
Rust中定义结构体的关键字是struct
struct User {username:String,email:String,active:bool,
}上述就是定义的一个名字为User的结构体这也能体现出一个结构体的好处当然所有具备结构体的语言都有的好处通过定义的名称可以明白每个字段的意义比如这个结构体就是在描述一个“用户”的对象包含了“用户名”、“邮箱”、“激活状态”等用户参数。当然结构体本身并不是一个对象它更类似一个创建对象的模板比如基于User结构体创建一个对象
let user1 User {email:String::from(someoneemail.cn),username:String::from(username),active:true,
}上述user1就是一个使用User创建的对象或者叫做实例。 我们可以针对对象进行字段的修改但是务必注意在Rust中有mut参数表示是可修改的上面的user1是不可修改的Rust机制如果需要修改就必须全部可修改如下user2
let mut user2 User {email:String::from(someoneemail.cn),username:String::from(username),active:true,
}
还记得“mut”不不记得可以往前看看。 这时user2所有的字段都可以修改了 修改方式为
user2.username String::from(user2);Rust结构体中有几个快捷用法其他语言中也有类似的用法 1. 创建对象时如果参数与结构体字段拥有完全一致的名称可以按照如下方式简写
let email String::from(email);
let username String::from(username);
let user3 User {email,username,active:true,
} 2. 还有一种方式就是快速继承另外一个对象的内容
let user4 User {email: String::from(email),..user3
};相当于user4的参数除了email外都跟user3的一致。 3. 还有一种简写的方式就是直接用元组定义也称为“元组结构体”
struct Color(i32, i32, i32);
struct Point(i32, i32, i32);
let black Color(0,0,0);与C语言的结构体不同的是Rust中的结构体可以包含方法方法是被定义在结构体的上下文中比如给User一个查看名字的方法
impl User {fn getname(self) - String {self.username}
}定义了方法通过实例后面加点号并跟上方法名、括号及所需要的参数进行调用。
user1.getname();拷贝原文内容供大家参考 结构体可以让我们基于特定领域创建有意义的自定义类型。通过使用结构体你可以将相关联的数据组合起来并为每条数据赋予名字从而使代码变得更加清晰。方法可以让我们为结构体实例指定行为而关联函数则可以将那些不需要实例的特定功能放置到结构体的命名空间中。
[1] 《Rust权威指南》01-2019-4420 第五章