常量 就是那些值不能被改变的变量。定义后,再也没有任何方法可以改变常量的值。
- const:不可改变的值(通常使用这种)。
- static:具有 'static 生命周期的,可以是可变的变量(须使用 static mut 关键字)。
有个特例就是 "string" 字面量。它可以不经改动就被赋给一个 static 变量,因为它 的类型标记:&'static str 就包含了所要求的生命周期 'static。其他的引用类型都 必须特地声明,使之拥有'static 生命周期。
常量定义
代码语言:txt复制const 常量名称:数据类型=值;
- 使用 const 关键字定义常量。
- 定义常量时必须指定数据类型。
- 常量名称的命名规则和之前变量的命名规则一样,但常量名称一般都是 大写字母。
fn main() {
const PI:f64=3.1415926;
println!("{}",PI);//输出 3.1415926
}
常量 可以在任意作用域里定义,包括全局作用域。也就是可以在任何地方定义。常量 只是一个符号,会在 编译时 替换为具体的值。
变量的隐藏
Rust 语言中允许重复定义一个相同变量名的变量。规则是 后面定义的变量会隐藏 前面定义的同名变量。
代码语言:txt复制 let name ="《Go语言极简一本通》";
let name="《从0到Go语言微服务架构师》";
println!("{}",name); //输出 《从0到Go语言微服务架构师》
我们定义了两个同名的变量 name
,第一次赋值 《Go语言极简一本通》
,第二次 赋值为《从0到Go语言微服务架构师》
。第二个 name
隐藏了第一次定义的变量。
隐藏变量后并且改变了数据类型
下面的例子:
代码语言:txt复制 let price=199;
let price="299";
println!("{}",price);//输出 299
同名常量
Rust 中,常量不能被隐藏,也不能被重复定义。
代码语言:txt复制const DISCOUNT:f64=0.8;
const DISCOUNT:f64=0.6;
编辑器报错
A value named `DISCOUNT` has already been defined in this block [E0428]
static
代码语言:txt复制 static BOOK: &'static str = "《Go语言极简一本通》";