变量

要点
变量(let)默认不可变,如果要可变需要使用可变变量(关键字mut)

不可变变量

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

    x = 1; //Error cannot assign twice to immutable variable `x`
    println!("The value of x is:{}", x);

第四行 x = 1; 会报错 Error cannot assign twice to immutable variable x

可变变量
在定义处加关键字“mut”则变量x变为可变变量

    let mut x = 0;
    println!("The value of x is: {}", x);

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

隐藏
同名变量可以多次定义,最新定义的会覆盖之前定义的变量

    let v = 2;
    let v = v+1;
    let v = v*10;

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

v的结果为30

类型

  1. 缺省类型
    数字缺省类型为i32
    浮点数缺省类型为f64
位长度有符号无符号
8-biti8u8
16-biti16u16
32-biti32u32
64-biti64u64
128-biti128u128
archisizeusize

其中isize,usize依赖运行平台,如果平台是32位架构的则是32位的大小,如果为64位架构的则是64位大小

  1. 字符类型
    大小为4个字节,支持中日韩等非英文类文字,Rust 中字符串和字符都必须使用 UTF-8 编码
  2. 复合类型
  • 元组(tuple):将多个不同类型的只组合进一个复合类型。长度固定不可变

      使用点号后跟索引来访问
      
      ```rust
          let t:(bool, char, i32, f64, u32) = (true, 'a', -12, 3.1415, 32);
      
          println!("{},{},{},{},{}", t.0, t.1, t.2, t.3, t.4)
      ```
      
      解构元组值
      
      ```rust
          let (a, b, c, d, e) = t;
      
          println!("{},{},{},{},{}",a, b, c, d, e)
      ```
    
    
  • 数组(array)
    数组中每个元素类型必须相同,长度固定不可变

        let num = [1,2,3,4,5];
    
        let name = ["Tom", "Bill", "Bruce"];
    
        let score = [60;3]; //[60, 60, 60];
    
        let m = num[3];
  • 切片
    可以理解为C/C++的指向内存中部分数据的指针

        let myStr = String::from("Helloworld");
        let slice1 = &myStr[0..5];
        let slice2 = &myStr[5..];


    其中&myStr[0..5]为从第0个开始到第4个,[0,1,2,3,4]的字符,不包括第5个,用数学的区间表达式[0..n)

&myStr[5..]的意思是从第五个开始到结束

同理如果要取得所有字符为 &myStr[..]

for 循环

let num = [1,2,3,4,5];

    for e in num.iter() {
        println!("{}", e)
    }

    for i in 0..5 {
        println!("{}", num[i])
    }

    //逆序
    for i in (0..5).rev() { 
        println!("{}", num[i])
    }

函数

关键字 fn

fn calculate(x:i32, y:i32) ->i32 {
    let result = x + y;

    return result;
}

麦穗儿
127 声望15 粉丝

程序猿以技术为本