认识变量

1. 变量的定义

let variable_name: type = value;
1
  • let:关键字用于声明变量。
  • variable_name:变量的名称,由字母、数字和下划线组成,以字母或下划线开头。
  • type:变量的类型,在 Rust 中所有变量都必须明确指定类型。
  • value:可选项,用于给变量赋初值。

在rust中,变量默认是不可变的

1.1 可变变量

如果需要修改变量,需要使用mut关键字来声明一个变量。


fn main() {
    //boss的血量初始为10
    let mut boss_health:u16 = 10;
    //玩家攻击一次boss boos血量减去1 
    boss_health -= 1;
    println!("{}",boss_health)
}

1
2
3
4
5
6
7
8
9

2. 常量

常量是在编译时就已经知道并且不可修改的值。使用const关键字声明。

比如:

fn main() {
    const PI: f32 = 3.14159;
    println!("The value of PI is {}", PI);
}
1
2
3
4

3. 类型

每个变量都有一个类型,这个类型决定了变量在内存中占用多少空间。

3.1 基本类型

  • 整型

    类型长度有符号无符号
    8-biti8u8
    16-biti16u16
    32-biti32u32
    64-biti64u64
    128-biti128u128
    archisizeusize

    需要注意的是arch,它表示长度取决于CPU的架构。isize 和 usize 类型取决于程序运行的计算机 CPU 类型: 若 CPU 是 32 位的,则这两个类型是 32 位的,同理,若 CPU 是 64 位,那么它们则是 64 位。isize 和 usize 的主要应用场景是用作集合数据类型的索引。

    有符号的变量可以储存包含从-2^(n-1) 到 2^(n-1)-1之间的数值,n是类型的长度。

    无符号数存储的范围为 0 到 2^(n-1)之间。

  • 浮点型

    小数

    • f32 32位大小
    • f64 64位大小
  • 布尔型

    真和假,true和false,用关键字bool表示。布尔值占用内存大小为1个字节。

  • 字符类型

    使用关键字char表示,占用4个字节,值用单引号声明

例子:

fn main() {
    //boss血量
    let  boss_health:u16 = 10;
    //boss位置
    let x : f64 = 20.23213;
    let y : f64 = 120.23213;
    //boss是否可攻击
    let is_attack : bool = false;
    //boss表情
    let boos_expression : char = '😀';
    println!(
        "boss血量:{},坐标:({},{}), 是否可攻击:{}, 表情:{}"
        ,boss_health,x,y,is_attack,boos_expression
    )
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

数值类型可以进行加减乘除等运算,但不同类型之间,无法运算

fn main() {
    let a :u32 = 20;
    let b :u32 = 30;
    let c :f32 = 10.23;
    let d :f64 = 36.55;

    let m = a + b;
    //无法进行运算 报错
    let s = c + d;
    //无法进行运算 报错
    let l = a + c;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
fn main() {
    let a :u32 = 20;
    let d :f64 = 36.55;
	//类型之间互转 可以用 as关键字
    let m = a as f64;
    let add = m + d;
    println!("add is {}",add)
}
1
2
3
4
5
6
7
8

3.2 字符串类型

fn main() {
    //boss名字
    let boss_name = "mszlu";
    println!("boss name is {}",boss_name);
}
1
2
3
4
5

字符串是我们经常使用的类型。

在上述定义中,我们并没有给变量设置类型,这是因为双引号定义的值为字符串,会自动推导其类型。

字符串类型标识为&str,是一个切片,关于切片的概念我们后面在讲。

&str 是一个不可变引用。其中str表示类型,&表示引用。

在rust中字符串是一个较为难的一个知识点,后续在详细讲解,这里先了解一个基本概念。