Rust <1>:数据类型、变量、可变性、常量、隐藏
rust 是强类型语言,所有变量、常量都必须有明确的数据类型;很多情况下,省略类型声明,编译器可自动推导,但不是所有情况下都会成功。
rust 有整型、浮点型、布尔型、字符型、数组、元组、枚举、结构体等数据结构,其中:
- 整型有:i8、i16、i32、i64、isize、u8、u16、u32、u64、usize 等
- 其中 isize 在不同硬件架构上编译的结果不同,如在 x86-64 上为 i64,在x86-32 上则为 i32
- 所有硬件平台的自动推导默认类型均为 i32
- 字面值之间可以添加任意数量的 '_' 提高可读性,如:123_456_789 与 123456789 等价
- 0xff、0o77、0b11_00 分别是十六进制、八进制、二进制表示法,另 b'A' 表示单字节字符 'A',仅支持 u8 类型
- 浮点型有:f32、f64,自动推导默认类型 f64
一、rust 中的变量值默认是不允许改变的,即不可二次斌值,如下代码无法通过编译,需要在变量前添加 mut 标识
fn main() {
let zVar: i64 = 0; // let mut zVar: i64 = 0;
zVar = 1;
println!("{}", zVar);
}
二、rust 中可以连续定义同名变量,新的变量将覆盖旧的变量,且前后的变量类型可以不一致:即 shadowing 特性。
fn main() {
let zvar: i32 = 0;
let zvar: i32 = zvar + 1;
let zvar: i32 = zvar * 2;
let zvar: &str = "Hello World!";
let zvar = zvar.len();
println!("{}", zvar);
}
三、rust 中常量定义必须显示指明数据类型,同一作用域内不可重名,局部定义覆盖全局定义。
const GLOB_NUM: f64 = 0.0; // 右值必须符合左值声明的数据类型,如指定 f64,但右值赋值为 1,则无法通过编译。
fn main() {
let zvar: i32 = 0;
let zvar: i32 = zvar + 1;
let zvar: i32 = zvar * 2;
let zvar: &str = "Hello World!";
let zvar = zvar.len();
const GLOB_NUM: f64 = 1.0;
println!("{} {}", zvar, GLOB_NUM);
}
四、结构体
fn main() {
#[derive(Debug)]
struct _T {
a: i32,
b: u64,
}
let mut _test = _T {a: , b: }; // 必须斌值,否则后续无法使用
_test.a = ;
_test.b = ;
println!("{} {}\n{:?}", _test.a, _test.b, _test);
}
注:
- 结构体类型定义末尾不加分号 ';'
- 结构体实例定义所有成员变量必须全部初始化
- #[derive(Debug)] 用于启用调试打印格式
- 允许在函数体内定义局部结构体
五、枚举
#[derive(Debug)]
enum _T {
_A(i32),
_B(String),
_C(i64, u32),
_D,
_E{x: i32, y: i32},
} impl _T {
fn print_self(&self) -> i32 {
println!("{:?}", self); }
} fn main() {
let _var = _T::_D;
let _var0 = _T::_E{x: , y:}; _var.print_self();
_var0.print_self();
}
- rust 的枚举成员可以进一步梆定任意类型数据结构
- 所有成员属于同一数据类型,方法共享
____
Rust <1>:数据类型、变量、可变性、常量、隐藏的更多相关文章
- Java 数据类型 & 变量与常量 & 注释
一.数据类型 1.数据类型分类 Java 的数据类型分为两大类: 基本数据类型:整数.浮点数.字符型.布尔型 引用数据类型(对象类型):类.数组,字符串.接口等. 2.基本数据类型 四类八种基本数据类 ...
- JAVA数据类型,变量,转换,常量,运算符
java数据类型: Java基本类型共有八种,基本类型可以分为三类: 1.字符类型char,用单引号赋值 2.布尔类型boolean 3.数值类型byte.short.int.long.float.d ...
- C语言基础学习基本数据类型-变量和常量
变量和常量 什么是变量和常量?有些数据在程序运行前就预先设定,并在运行过程中不发生变化,称之为常量:有些数据在程序运行中可能发生变化或被赋值,称之为变量. 使用变量前必须先声明一个变量.变量定义的语法 ...
- Python--前端基础之JavaScript(JS的引入方式,JS的变量、常量和标识符,JS的数据类型,运算符,流程控制,JavaScript的对象)
JavaScript介绍 JavaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互. JavaScript是浏览器解释执行的,前端脚 ...
- Java程序,基本数据类型、、数据类型转换、变量和常量、常用运算符
一.基本数据类型 整数类型:byte.short. int(常用).long(较常用) 定义某个变量 int a=10: 浮点类型(小数):float.double(常用) ...
- javascript 概述及基础知识点(变量,常量,运算符,数据类型)
JavaScript概述 1.1 什么是JavaScript: javaScript(简称js),是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言.同时也是一种广泛用于客户端Web开发的脚本语 ...
- java学习笔记----数据类型,变量,常量
一.数据类型 1.基本类型(8种,又称内置数据类型).6种数字类型(byte,short,int,long,float,double),一种字符型(char),一种布尔类型(boolean). byt ...
- JS基础-数据类型-运算符和表达式-变量和常量
1.js的基础语法2.js调试 1.F12调出控制台,查看提示错误及其位置. 2.出错时只影响当前代码块,不会影响其他代码块,后续代码块继续执行.3.语法规范 1.js语句:可执行的最小单元 必须以 ...
- java===java基础学习(1)---数据类型,运算,变量,常量
今天起开始了java的学习之路,主要学习了数据类型和运算,变量,常量.基本和python有很多相通的地方,所以看起来很容易上手.下面是学习笔记! package testbotoo; public c ...
- Go语言基础之1--标识符、关键字、变量和常量、数据类型、Go的基本程序结构、Golang的特性
一.前言 当我们项目较为简单时,我们在src目录下新建一个该项目目录,里面存放源码文件即可,见下图: 当我们一个项目较为复杂时,我们可以在src目录下新建一个该项目目录,在针对该项目不同模块创建不同目 ...
随机推荐
- PAT_A1085#Perfect Sequence
Source: PAT A1085 Perfect Sequence (25 分) Description: Given a sequence of positive integers and ano ...
- QTP与QC整合
QC-QTP整合 在本节中,我们将学习如何将QTP和QC整合.通过整合,在QTP自动化脚本可以直接从Quality Center执行.建立连接,第一个步骤是安装所需的加载项.我们将了解如何通过采取样品 ...
- spring注解开发:Configuration&Bean
1.使用xml创建bean的方式 1.首先新建一个maven工程,添加如下依赖 <dependency> <groupId>org.springframework</gr ...
- 【怒转】 idea快捷键说明大全(中英文对照)
1 编辑[Editing] 快捷键 英文说明 中文说明 Ctrl + Space Basic code completion (the name of any class, method or var ...
- Nacos-服务注册地址为内网IP的解决办法
最近在使用Spring Cloud Alibaba这一套微服务解决方案,但是在服务注册的时候,网关死活找不到微服务地址,自己的微服务通过网关怎么也访问不到. 查找原因 仔细一查才发现,网关去访问了一个 ...
- Docker镜像仓库的搭建--> Harbor篇
简介 Harbor是VMware公司开源的一个企业级Docker Registry项目,项目地址:https://github.com/goharbor/harbor Harbor作为一个企业级私有R ...
- [Java 教程 04] Java基础语法
在上一篇文章中我们已经运行了个简单的java程序,但是没有给大家讲解代码部分的内容与含义.学习,我们要做到知其然而知其所以然,所以本篇文章我们就来讲解java程序的基本语法,学完这篇文章你再回头看上篇 ...
- elasticsearch 父子关系
ElasticSearch 中的Parent-Child关系和nested模型是相似的, 两个都可以用于复杂的数据结构中,区别是 nested 类型的文档是把所有的实体聚合到一个文档中而Parent- ...
- WordPress 页面点击显不同颜色爱心
在主题的页脚添加以下js即可实现 <script type="text/javascript"> /* * https://www.xianjieo.cn */ !fu ...
- 在scite编辑器中使用astyle格式化c代码
用 vc6 很喜欢 alt+F8 的功能. 能够格式化代码. scite 没有这个功能. 今天看它的配置文件发现这么两行: command.name.0.*.cxx=Indent command.0. ...