Rust学习笔记 - 变量、数据类型与控制流

栏目: 编程语言 · Rust · 发布时间: 5年前

内容简介:在 Rust 中,变量默认都是不可变的,采用关键字而常量则是一直不可变的,比如声明一个名为通过 Shadowing 可以复用变量名,但依旧保持变量的不可变性,例如:

0. 变量

在 Rust 中,变量默认都是不可变的,采用关键字 let 声明,若需要使变量可变需使用 mut ,但需要注意即便如此也不能改变变量的类型:

fn main() {
    // 若只使用 let x = 5; 则会报错
    let mut x = 5;
    println!("The value of x is: {}", x);
    x = 6;
    println!("The value of x is: {}", x);
}

而常量则是一直不可变的,比如声明一个名为 MAX_POINTS 的常量:

const MAX_POINTS: u32 = 100_000;

通过 Shadowing 可以复用变量名,但依旧保持变量的不可变性,例如:

fn main() {
    let x = 5;

    let x = x + 1;

    let x = x * 2;

    println!("The value of x is: {}", x); 
}

1. 数据类型

Rust 是静态类型语言,即编译时就必须知道所有变量的类型。当多种类型均有可能时,必须增加类型注解:

let guess: u32 = "42".parse().expect("Not a number!");

变量包含 标量类型与复合类型 ,其中 Rust 有四种基本的标量类型(代表一个单独的值):整型、浮点型、布尔类型和字符类型。

整型类别有这几种:

长度 有符号 无符号
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 u128
arch isize usize

浮点数采用 IEEE-754 标准表示。 f32 是单精度浮点数, f64 是双精度浮点数。

fn main() {
    let x = 2.0; // f64

    let y: f32 = 3.0; // f32
}

布尔类型也存在两种声明方式:

fn main() {
    let t = true;

    let f: bool = false; // 显式指定类型注解
}

需要注意,Rust 的字符类型由单引号指定,而字符串使用双引号。 char 代表一个 Unicode 标量:

let c = 'z';

复合类型包含元组和数组:

fn main() {
    // 类型注解可选
    let tup: (i32, f64, u8) = (500, 6.4, 1);

    // 解构
    let (x, y, z) = tup;

    // 除了使用模式匹配解构外,也可以使用点号(.)后跟值的索引来直接访问它们
    // 元组的第一个索引值是 0
    let one = tup.2; 

    println!("The value of y is: {}", y);
}

与元组不同,数组中的每个元素的类型必须相同,且定长,一旦声明长度不可改变,如需变长则使用 vector:

fn main() {
    let a = [1, 2, 3, 4, 5];

    let first = a[0];
    let second = a[1];
}

2. 控制流

Rust 有三种循环:loop、while 和 for

let mut number = 3;

let result = loop {
    number += 1;

    if number == 10 {
        break number * 2;
    }
};

while number != 0 {
    println!("{}!", number);

    number = number - 1;
}

let a = [10, 20, 30, 40, 50];
let mut index = 0;

while index < 5 {
    println!("the value is: {}", a[index]);

    index = index + 1;
}

Rust 在 if 表达式中总是期望一个 bool 值,而不会替你去转换:

fn main() {
    let number = 3;

    if number != 0 {
        println!("number was something other than zero");
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网站入侵与脚本攻防修炼

网站入侵与脚本攻防修炼

逍遥 / 2008-9 / 59.00元

《网站入侵与脚本攻防修炼》从“攻”、“防”两个角度,通过现实中的入侵实例,并结合原理性的分析,图文并茂地展现网站入侵与防御的全过程。全书共分8章,系统地介绍网站入侵的全部过程,以及相应的防御措施和方法。其中包括网站入侵的常见手法、流行网站脚本入侵手法揭密与防范、远程攻击入侵网站与防范、网站源代码安全分析与测试等。《网站入侵与脚本攻防修炼》尤其对网站脚本漏洞原理进行细致的分析,帮助网站管理员、安全人......一起来看看 《网站入侵与脚本攻防修炼》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具