写在前面
我也不是什么特别厉害的大牛,学历也很低,只是对一些新语言比较感兴趣,接触过的语言不算多也不算少,大部分也都浅尝辄止,所以理解上可能会有一些偏差。
自学了Java、Kotlin、Python、Rust,学艺不精但还是总结出一套快速入手新语言的规律。学习一个新语言的套路我总结为:数据类型(包括命名方式),控制语句(循环,逻辑判断),方法命名方式,类相关的面向对象(继承,接口,多态如果是面向对象语言),特有语法糖。
Rust安装
个人使用的是Linux,一条命令行搞定,推荐使用Windows的用户开启WSL来安装Rust,然后用VScode的remote-ssh插件编写代码。
为什么需要分辨数据类型?
写过js,Python的同学都知道,命名变量的时候我们不需要指定数据类型,事实上大部分动态语言都不需要指定类型,然而静态语言,类似Java、C这样需要编译的语言,在程序编译时都要分配好我们变量的内存空间,所以需要指定好数据类型。
Rust数据类型
变量的命名以及可变与不可变
命名
使用关键字let
来命名变量
fn main() {
let a=5;
}
可变与不可变
fn main() {
let a=5;
//变量默认情况下,不可变
a=6;
//这样写会报错,因为我们命名了一个不可变的变量a
//之后又修改了a的值为6
}
rust默认情况下,所有变量都是不可变的,如果需要变量可变,则需要用let mut
来命名变量mut
是单词mutable
的缩写。
let mut a=5;
a=6;
//这样写是不会报错的。
整型
接下来我们来看一下Rust的数据类型中的整型。
整型的命名方式:有符号-- i(bit)
无符号--u(bit)
如8bit的有符号整型:i8
32bit的无符号整型:u32
bit
可以使用的数值为:8、16、32、64、128、size
size
:如果计算机是32位,则 isize
为i32
,64位则为i64
let a:i32=5;
但是刚刚我们在可变性中,并没有指定a变量的类型啊?
这是因为如果给出具体数值,在Rust中是可以不指定具体类型的,编译器会去推倒他的类型。那么let a=3
这样写,他的类型会是多少呢?在Rust中,这样的写法默认类型是i32
,并且也建议大家使用i32
这个类型,这是因为编译器对于i32
这个类型做过特殊优化。在运算上i32
会比其他数据类型更快。
当然啦!Rust作为一种底层语言,运行速度已经很快了。
浮点
也就是我们常说的小数。相对于整数,小数多了一个小数点.
,而小数点所在的位置又不确定,看起来就好像是在一串数中浮动一样,所以我们成小数为浮点数(floating-point numbers)。类比整型来学习,浮点数有两种,单精度浮点f32
和双精度浮点f64
fn main(){
let a=3.14;//a的类型为f64
let b:f32=3.14;//b的类型为f32
}
Rust中默认浮点类型为f64
这是因为他们的计算速度几乎一样快,但是f64
的精度更高。
布尔
明天再写