Rust(7):结构体类型

今天学习的内容是 Rust 中的结构体类型

结构体是一种用户自定义的数据类型,它是多种不同数据类型的组合。

结构体类型使用关键字 struct 声明,有三种类型的结构体:

  • 无字段的单元结构
  • 元组结构
  • 经典的 C 结构

结构体类型的命名采用大驼峰命名规则,下面看具体的介绍。

单元结构体(unit struct )

这种结构体类型没有字段定义,使用关键字 struct 进行声明,随后是其名称,并用分号作为结尾。比如:

struct Unit;
fn main() {
  let unit = Unit;
}  

这种结构体类型用的非常少。

元组结构体(tuple struct )

同样使用 struct 进行声明,后面跟类型名称,最后使用元组类型来定义结构体内容。比如:

struct Color(i32, i32, i32);

虽然没有显式的为结构体中的每个字段命名,但是一个元组结构体类型是具有明确的类型名称的。比如这个例子就声明了 Color 类型的元组结构体。

初始化一个元组结构体:

let color = Color(255, 255, 255);

元组结构体的访问,和元组类型一样,可以使用 . 语法,可以使用索引,可以使用模式匹配,比如:

println!("{}", color.0); // 255

类 C 结构体

使用 struct 声明,后面跟着结构体类型的名称,再后面使用一对大括号来声明该类型有哪些字段。比如声明一个 User 类型的结构体:

struct User {
    name: String,
    age: u32,
}

结构体中的每个字段使用 , 进行分隔,最后一个字段可以省略。

初始化一个 User 结构体实例:

let user = User {
    name: String::from('kw'),
    age: 18
}

访问结构体中的字段可以使用 . 运算符和模式匹配:

println!("名字:{}, 年龄:{}", user.name, user.age); // 名字:kw, 年龄:18

JSer 可以发现,这种类 C 结构体,非常像是 JS 中的普通对象。其实它们两者的意义也非常一致,就是能自定义更加复杂的数据类型,来应对更复杂的类型结构。

在 Rust 中,使用两个点 .. 来实现快速复用一个现成的结构体实例:

struct User {
  name: String,
  age: u32,
}

fn main() {
  let user1 = User {
    name: String::from("user1"),
    age: 18,
  };

  let user2 = User {
    name: String::from("user2"),
    ..user
  };


  println!("名字:{}, 年龄:{}", user2.name, user2.age); 
}

打印的结果是 名字:user2, 年龄:18 ,说明 user2name 是初始化时设置的值,并复用了 user1age 字段的值。

小结

Rust 中的结构体类型, 包括三类:单元结构体,元组结构体和类 C 结构体,其中类 C 结构体是使用最广泛的一种结构体类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昆吾kw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值