Rust-结构体(Struct)

struct 是命名并封装数个栏位数值所组合的自订型别

struct 有 3 种类型

  • 元组结构体(tuple struct),就是具名元组而已
  • 经典的C语言风格结构体(C struct)
  • 单元结构体(unit struct),不带字段,在泛型中很有用

前几篇所讲的元组型别(tupl),只要元组包含少量的字段就很好用但是当字段一多就容易将它们搞混
并且代码也很容易理解

例如下面的代码,不能很轻易的知道哪个字段相加,而且元组型别是有序的如果在开头增加字段哪变成後面的字段都需要往後递延非常不直觉

let data = (1, 'a', 'b', 199.199, true, -100);
println!("{}", data.0 + data.5);

这时候使用结构体(Struct)就非常有用,可以为字段命名并标示型别

它以struct关键字开头後面接着要声明的类型再以大括号包起来

例如

// 经典的C语言风格结构体(C struct)
struct User {
    username: String,
    email: String,
    active: bool,
}

let user = User {
    email: String::from("[email protected]"),
    username: String::from("user123"),
    active: true,
};

println!("{} {} {}", user.email, user.username, user.active)

元组结构,拥有元组型别和结构两个特性又不完全一样

  • 需要事先声明
  • 字段没有名称

实际上这种结构不常使用

struct User(String, String, bool);

let user = User(
    String::from("[email protected]"),
    String::from("user123"),
    true,
);

println!("{} {} {}", user.0, user.1, user.2)

单元结构体

单元结构体适合用在当要实作一个特徵(trait)或某种型别,但没有任何需要储存在型别中的资料

struct AlwaysEqual;

let subject = AlwaysEqual;

<<:  关於继承

>>:  [职涯]留任还是离职?看完这篇後再做决定!

JS中的排序法_上

在Day7时候有提到排序法的简介,并且简介常见的6个演算法,在Icebear学习5天JS语法之後,在...

Day27:今天我们来聊一下IoT and OT Hacking

物联网(IoT)的重大发展促进了日常生活中连网设备的激增。 从智能家庭到自动化医疗保健应用,物联网无...

[Day 29] 非同步组件ㄅㄨㄅㄨ

如果某天我们在写大型专案,需要用上大量的组件,这是时候就可以用上非同步的组件,在需要时载入需要的组件...

完赛感言

Hello,各位好! 虽然已经完成比赛了,但还是想追加一篇来聊聊我的参赛感想,也作为初次参与铁人赛的...

【Day00】系列文概述 & 目录

连载动机 藉由 30 天笔记, 将学习 React 相关的知识整理起来, 以便日後回头参照。 主要参...