10.rust-常量

2022-09-04 11:35:57 浏览数 (1)

常量 就是那些值不能被改变的变量。定义后,再也没有任何方法可以改变常量的值。

  • const:不可改变的值(通常使用这种)。
  • static:具有 'static 生命周期的,可以是可变的变量(须使用 static mut 关键字)。

有个特例就是 "string" 字面量。它可以不经改动就被赋给一个 static 变量,因为它 的类型标记:&'static str 就包含了所要求的生命周期 'static。其他的引用类型都 必须特地声明,使之拥有'static 生命周期。

常量定义

代码语言:txt复制
const 常量名称:数据类型=值;
  1. 使用 const 关键字定义常量。
  2. 定义常量时必须指定数据类型。
  3. 常量名称的命名规则和之前变量的命名规则一样,但常量名称一般都是 大写字母
代码语言:txt复制
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语言极简一本通》";

0 人点赞