rust-结构体
21.结构体(Struct)
结构体( struct
)可以由各种不同类型组成。使用 struct 关键字来创建。struct 是 structure 的缩写。结构体可以作为另一个结构体的字段。结构体是可以嵌套的。
元组结构体(tuple struct),事实上就是具名元组而已。
1
struct Pair(String, i32);
经典的 C 语言风格结构体(C struct)。
1
2
3struct 结构体名称 {
...
}单元结构体(unit struct),不带字段,在泛型中很有用。
1
struct Unit;
定义结构体
1 | struct 结构体名称 { |
创建结构体实例
1 | let 实例名称 = 结构体名称{ |
结构体初始化,其实就是对 结构体中的各个元素进行赋值。
1 | #[derive(Debug)] |
访问实例属性
1 | 实例名称.属性 |
修改结构体实例
结构体实例默认是不可修改的,如果想修改结构体实例,声明时使用mut关键字。
1 | let mut s2 = Study { |
结构体做参数
1 | fn show(s: Study) { |
结构体作为返回值
1 | fn get_instance(name: String, target: String, spend: i32) -> Study { |
方法
方法(method)是依附于对象的函数。这些方法通过关键字 self 来访问对象中的数据和其他。方法在 impl 代码块中定义。
与函数的区别
函数:可以直接调用,同一个程序不能出现 2 个相同的函数签名的函数,应为函数不归属任何 owner。
方法:归属某一个 owner,不同的 owner 可以有相同的方法签名。
1 | impl 结构体{ |
impl 是 implement 的缩写。意思是 “实现”的意思。
self 是“自己”的意思,&self 表示当前结构体的实例。 &self 也是结构体普通方法固定的第一个参数,其他参数可选。
结构体方法的作用域仅限于结构体内部。
1 | impl Study { |
结构体静态方法
1 | fn 方法名(参数: 数据类型,...) -> 返回值类型 { |
1 |
|
单元结构体
unit type 是一个类型,有且仅有一个值:(),单元类型()类似 c/c++/java 语言中的 void。当一个函数并不需要返回值的时候,rust 则返回()。但语法层面上,void 仅仅只是一个类型,该类型没有任何值;而单元类型()既是一个类型,同时又是该类型的值。
实例化一个元组结构体
1 | let pair = (String::from("从0到Go语言微服务架构师"), 1); |
访问元组结构体的字段
1 | println!("pair 包含 {:?} and {:?}", pair.0, pair.1); |
解构一个元组结构体
1 | let (study, spend) = pair; |
添加微信 | 公众号更多内容 |
---|---|
![]() |
![]() |
本博客所发布的内容,部分内容来源于网络,版权归原作者所有,如有侵权,请联系删除。转载请注明来自 面向加薪学习!