3. 通用的编程概念
3.1变量和可变性
- 变量默认都是immutable
- mut关键字使得变量可变,但是带来了额外的复制开销,考虑Struct的数据比较大的情况
- shadow变量,对同一个名字的变量可以shadow,改变它的类型(建议还是别这么干)
let spaces = " ";
let spaces = spaces.len();
- 常量 const
const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;
3.2 数据类型
数字变量的转换,不可以强制类型转换
整数的类型:i8, i16, i32, i64, i128, isize
无符号整数类型:u8, u16, ...., usize
整数默认类型是 i32
截屏2022-01-06 下午9.16.33.png
let guess: u32 = "42".parse().expect("Not a number!");
整数溢出:debug模式下会panic,release模式下会截断
浮点数
- 默认类型是f64(为啥不是f32,因为现代cpu上执行效率差不多,但却提供更高精度)
你知道加减乘除的英文怎么表达吗,看代码
fn main() {
// addition
let sum = 5 + 10;
// subtraction
let difference = 95.5 - 4.3;
// multiplication
let product = 4 * 30;
// division
let quotient = 56.7 / 32.2;
let floored = 2 / 3; // Results in 0
// remainder
let remainder = 43 % 5;
}
char类型:4个字节,可以表示表情
fn main() {
let c = 'z';
let z = 'ℤ';
let heart_eyed_cat = '😻';
}
复合类型 tuple
let tup: (i32, f64, u8) = (500, 6.4, 1);
Array类型
let a = [1, 2, 3, 4, 5];
let a: [i32; 5] = [1, 2, 3, 4, 5];
let a = [3; 5];
数组类型与tuple类型相比,它的所有元素类型必须相同
3.3 函数
snake case (下划线相连接)
fn another_function() {
println!("Another function.");
}
3.4 注释
多种注释的方式
- //
- /* */
3.5 控制流
- if else
- loop
- while
网友评论