Rust学习笔记_14——结构体

Rust学习笔记_11------函数
Rust学习笔记_12------闭包
Rust学习笔记_13------枚举


结构体

文章目录

    • 结构体
      • [1. 定义结构体](#1. 定义结构体)
      • [2. 创建结构体实例](#2. 创建结构体实例)
      • [3. 结构体方法](#3. 结构体方法)
      • [4. 结构体更新语法](#4. 结构体更新语法)
      • [5. 元组结构体](#5. 元组结构体)

Rust 中的结构体(struct)是一种自定义的数据类型,允许你将数据组合成一个单一的复合类型。结构体在 Rust 中非常常用,因为它们提供了一种将数据组织成有意义的形式的方式。结构体可以是类似元组的命名集合,也可以包含方法,使其类似于类(但请注意,Rust 并不具备传统面向对象编程中的继承和多态)。

1. 定义结构体

在 Rust 中,你可以使用 struct 关键字来定义一个结构体。结构体的定义通常包含字段(field),每个字段都有一个名称和一个类型。

rust 复制代码
struct Person {
    name: String,
    age: u32,
}

2. 创建结构体实例

要创建结构体的实例,你需要使用字段名和值来初始化它。这通常通过字段初始化语法来完成。

rust 复制代码
let person1 = Person {
    name: String::from("Alice"),
    age: 30,
};

3. 结构体方法

你可以在结构体上定义方法,这些方法类似于其他编程语言中的成员函数。

方法是与某个特定类型(在这个情况下是结构体)相关联的函数。

rust 复制代码
impl Person {
    fn greet(&self) {
        println!("Hello, my name is {} and I am {} years old.", self.name, self.age);
    }
}

4. 结构体更新语法

Rust提供了一种方便的语法来创建基于现有结构体示例的新实例,并只修改部分字段

rust 复制代码
// person2 是一个新的 Person 实例,它的 name 字段被设置为 "Bob",而 age 字段则从 person1 复制而来。
let person2 = Person {
    name: String::from("Bob"),
    ..person1
};

5. 元组结构体

在 Rust 中,你可以使用 struct 关键字后跟一对圆括号来定义一个元组结构体。圆括号内可以包含多个类型,这些类型就构成了元组结构体的字段。

rust 复制代码
// 创建元组结构体
struct Color(u8, u8, u8);

// 创建结构体实例
let black = Color(0, 0, 0);
let white = Color(255, 255, 255);
let red = Color(255, 0, 0);

// 调用实例
let Color(r, g, b) = red;
println!("Red component: {}", r);
相关推荐
代码游侠9 分钟前
应用--Minishell实现
linux·运维·笔记·学习·算法
zore_c14 分钟前
【C语言】Win 32 API——一部分内容详解!!!
c语言·开发语言·c++·经验分享·笔记
重生之我在番茄自学网安拯救世界19 分钟前
网络安全中级阶段学习笔记(七):Web 安全之文件上传漏洞笔记1(包含upload-labs-master靶场前三关实战)
笔记·学习·web安全·文件上传漏洞·网安基础
走在路上的菜鸟20 分钟前
Android学Dart学习笔记第十五节 类
android·笔记·学习·flutter
Chen--Xing22 分钟前
LeetCode 11.盛最多水的容器
c++·python·算法·leetcode·rust·双指针
xian_wwq25 分钟前
【学习笔记】AI赋能安全运营中心典型场景
人工智能·笔记·学习
千天夜27 分钟前
深入排查Unity开发中的“要实例化的对象为空”异常:一次从报错到修复的完整历程
学习
知识分享小能手31 分钟前
CentOS Stream 9入门学习教程,从入门到精通,CentOS Stream 9 的 Docker 容器 —— 语法详解与实战案例(16)
学习·docker·centos
非凡ghost35 分钟前
FlexiPDF(专业PDF编辑软件)
windows·学习·pdf·软件需求
d111111111d40 分钟前
嵌入式面试问题:STM32中指针和数组的本质区别是什么,常用数组存储什么数据?
java·笔记·stm32·单片机·嵌入式硬件·学习