rust学习笔记(二)变量和类型
变量声明 let v1 :i32 = 10; rust官方说这有诸多优点,其实是方便编译器开发程序员。。
let 定义常量。可变常量需要加上mut。
let可以对变量重复定义成任意类型
let x = 1 let x = true
前面的语句为啥没有定义类型,这个功能就像c++的auto一样,自动推导了类型。
显示的定义别名
type tInt = u32; let x2 :tInt = 20;
静态变量
静态变量它的声明周期为整个程序运行期间
定义需要注意
- 必须马上初始化
- 初始化时必须编译器认为返回常量
- 允许加上mut但是必须使用unsafe
static AAA:i32 = 0; println!("{:?}", AAA); static mut AAA2 :i32 = 1; unsafe{ AAA2 = 21; println!("{:?}", AAA2); }
const定义常量: const G2 :i32 =0;
常用的数据类型和别的语言没啥大的差别
bool
char 不是1个字节是4个字节。需要使用1个字节可以使用u8数组
i8 u8 i16 u16 i32 u32 i64 u64 i128 u128 isize usize
整数溢出,rust提出了解决方案
- checked_* 返回None
- saturating_* 返回最大值
- wrapping_* 返回溢出的截断
f32 f64
浮点数可能返回特别的值需要注意了啊
enum FpCategory{
Nan, 空
Infinite, 无限大
Zero,0
Subnormal, 小数位超出位数收敛的情况
Normal 正常
}
指针类型和智能指针这些以后再说
Box<T> 有所有权,无权释放内存
&T 无权释放内存,无权写
& mut T 无权释放内存,有权写
*const T 只读指针,无权写
*mut T有权写
Rec<T>共享所有权,线程不安全
Act<T>原子型引用指针,共享所有权,线程安全
Cow<a,T> 写时复制
类型转换不支持隐式的转换,这种新语言有优势,使用as,后续一般使用标准库转换。
复合类型
tuple元组
let tup1 = (2131i32, "abc"); println!("{} {}", tup1.0, tup1.1);
有点奇妙的是允许定义空元组 let ept:() = () 占用内存空间为0
struct 结构
1 struct Poinit{ 2 x :i32, 3 y :i32, 4 } 5 let p = Poinit{x:1, y:2};
也有空结构 struct AA; struct AA2(); struct{};
type struct结构,没有名字的结构体
struct AA(i32,i32)
struct Age(i32); let age2 = Age(1); println!("{:?}", age2.0);
enum 主要用在匹配模式match一起使用
类型递归定义,不能包含自身。
类似c
type struct Node{ void *data; struct Node *next; } struct Rex{ data:i32, next:Box<Rex>, }
原文地址:https://www.cnblogs.com/beckbi/p/11516557.html
- 42. select 的默认分支 | 厚土Go学习笔记
- 执行计划变化导致CPU负载高的问题分析 (r8笔记第20天)
- 数据结构基础(2) --顺序查找 ; 二分查找
- 数据结构基础(1) --Swap ; Bubble-Sort ; Select-Sort
- 使用 Go 语言完成 HTTP 文件上传与下载
- 运维平台的建设思考-元数据管理(四)(r8笔记第16天)
- JavaWeb21-基础加强(注解;代理;类加载器;泛型反射
- MySQL迁移文件的小问题(r8笔记第18天)
- SpringMVC学习第一天
- 最近的几个技术问题总结和答疑 (r8笔记第19天)
- Hibernate_day04总结
- Hibernate_day03总结
- 服务器进程异常的原因分析(第二篇)(r8笔记第16天)
- 最近处理的几个小问题_20160311 (r8笔记第35天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法