iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Rust的基本数据类型有哪些
  • 309
分享到

Rust的基本数据类型有哪些

2023-06-15 13:06:02 309人浏览 独家记忆
摘要

这篇文章主要讲解了“Rust的基本数据类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Rust的基本数据类型有哪些”吧!Rust 和 Go 一样,都是静态类型语言,这表示每个变量的类

这篇文章主要讲解了“Rust的基本数据类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Rust的基本数据类型有哪些”吧!

Rust 和 Go 一样,都是静态类型语言,这表示每个变量的类型必须明确。和 Go 类似,大多数情况下,Rust  编译器能够推断出某个值的类型,不需要我们显示指定,写起来有点类似于弱类型似语言。但有些情况下,必须明确告知编译器我们使用什么类型,在 Rust 中,这叫  「类型注解」(type annotations)。

对于类型注解,看一个常见的例子:

let guess = "42".parse().expect("Not a number!");

这是将字符串 "42" 转为数字 42。在 Go 语言中,一般这么做:

guess, err := strconv.Atoi("42") if err != nil {   panic(err) }

但上面的 Rust 代码会报错:

error[E0282]: type annotations needed  --> src/main.rs:2:9   | 2 |     let guess = "42a".parse().expect("Not a number!");   |         ^^^^^^ consider giving `guess` a type

这和 Go 还是不太一样。Go 中很多时候,数值类型会是 int。

为了修复这个问题,我们需要为 number 指定一个类型,比如 u32。

let guess: u32 = "42".parse().expect("Not a number!");

吐槽:在 Rust 中,类型注解和 Go 中一样,放在变量后面。但 Rust  中变量和类型直接非得加一个冒号(:),而且一般冒号紧跟着变量名(rustfmt 的建议)。不知道冒号有啥特殊需要?!

Rust 内置如下基本数据类型:

  • 整数类型

    • 有符合整数:i8、i16、i32、i64、i128、isize

    • 无符号整数:u8、u16、u32、u64、u128、usize

  • 浮点类型:f32、f64

  • 布尔型:bool

  • 字符型:char

01 整数类型

将整数类型整理为一张表,如下:(用 Go 语言对应的类型作对比)

长度有符号无符号Go 有符号Go 无符号
8-biti8u8int8uint8
16-biti16u16int16uint16
32-biti32u32int32uint32
64-biti64u64int64uint64
128-biti128u128--
archisizeusizeintuint

吐槽:有时候 Rust 真的很节省,int、uint 直接省略为 i、u,function 省略为  fn。但有时候又很繁琐(不简洁),比如前面说到的变量和类型之间的冒号。。。

这里用 u、i 的形式,也需要一段时间适应。。。

两点说明:

  • Go 中没有 128 位长度的整数

  • isize 和 usize 对应 Go 中的 int 和 uint,它们的长度依赖运行程序的计算机架构:64 位架构上它们是 64 位的, 32  位架构上它们是 32 位的

在 Go 中,整型变量默认类型是 int,以下代码可以证明这一点:

x := 32 fmt.Printf("%T\n", i) // 输出:int

那 Rust 中默认是什么类型呢?

我想在 Rust 中找到一种办法,打印变量类型,网上找到了这样的办法(有点挫):

// 打印变量类型的函数。该函数看不懂先放着。 fn print_type_of<T>(_: &T) {   println!("{}", std::any::type_name::<T>()) }  fn main() {     let x = 32;     print_type_of(&x);    // 输出:i32 }

可见 Rust 中整型变量默认类型是 i32(即使在 64 位机器上,也是 i32)。这一定程度上说明,在 Go 中,整数一般建议用 int 类型;而  Rust 中,一般建议用 i32 类型。(所以,为什么开头的 parse 不能默认推断为 i32 类型呢?怕溢出?)

更智能的类型推断

上文说 Rust 和 Go 一样,支持类型推断。不过 Rust 的推断更智能,怎么个智能法?看下面的代码:

// 打印变量类型的函数 fn print_type_of<T>(_: &T) {     println!("{}", std::any::type_name::<T>()) }  fn main() {     let x = 32;     let y: i8 = x;     print_type_of(&x);     print_type_of(&y) }

根据上面的讲解,x 应该是默认类型:i32。但实际上,x 和 y 的类型都是 i8。也就是说,因为 x 的类型没有显示的指定(类型注解),Rust  编译器会根据上下文(实际上是 let y: i8 = x 这句)推断出 x 的类型应该和 y 一致,即 i8。

在 Go 中,int8 和 int 是不会进行隐式转换的,Rust 也一样,必须进行显示转换。但 Rust  的智能类型推断,可以让开发者少写类型转换的代码。

比如上面代码,在 Go 语言中是行不通的:

package main  import (  "fmt" )  func main() {  x := 32  var y int8 = x  fmt.Printf("%T\n", x)  fmt.Printf("%T\n", y) }

会报错:

cannot use x (type int) as type int8 in assignment

也就是说,Go 中的类型推断不会考虑上下文,因此没有 Rust 智能。

因为编译器的强大,vscode 中(安装 rust-analyzer)会有类型提示,这样上面的 print_type_of  函数也不需要了。做了一个动图,注意上面 x 的类型变化:

Rust的基本数据类型有哪些

此外,isize 和 usize 类型一般用作某些集合索引,以后文章会看到。

关于各种类型的表示范围我列出了,因为这个系列不是为无编程经验的人准备的。这个系列更多是为 Go 爱好者准备的 Rust 教程,因此和 Go  一致的地方可能不会讲。

02 浮点类型

和 Go 一样,Rust 也有两种浮点数类型:f32 和 f64,对应 Go 中的 float32 和 float64。和 Go 一样,默认类型是  f64,可以通过类型注解指定具体的浮点类型。

let x = 2.0; // 默认是 f64

一般地,整数类型和浮点类型都成为数值类型。

数值类型有一些共同的东西。比如都支持基本的数学运算。此外,除了通过类型注解指定类型,数值类型还可以在字面值后面带上类型后缀指定类型,比如:

let x = 2.0f32; // f32 类型 let y = 32i64; // i64 类型

03 布尔型

和 Go 语言一样,Rust 中的布尔类型使用 bool 表示(咋没用 b、bl 之类的缩写呢?哈哈哈)。有两个可能的值:true 和  false。

fn main() {     let t = true;      let f: bool = false; // 显式指定类型注解 }

04 字符型

Rust 中的 char 表示字符类型,是 Rust 的基本类型,字面值由单引号指定。

let a = 'a'; let b = '中'; let c = '?';

可见,Rust 中的 char 类型和 Go 中的 rune 一样,表示的是 Unicode 码点,占 4 个字节。

因为 Rust 中的字符串很复杂,而且不是基本类型,因此留在以后讲解。

感谢各位的阅读,以上就是“Rust的基本数据类型有哪些”的内容了,经过本文的学习后,相信大家对Rust的基本数据类型有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Rust的基本数据类型有哪些

本文链接: https://www.lsjlt.com/news/280359.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Rust的基本数据类型有哪些
    这篇文章主要讲解了“Rust的基本数据类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Rust的基本数据类型有哪些”吧!Rust 和 Go 一样,都是静态类型语言,这表示每个变量的类...
    99+
    2023-06-15
  • php有哪些基本数据类型
    php的基本数据类型有字符串、整数、浮点数、布尔型、数组、对象、NULL、资源和回调函数。详细介绍:1、字符串,用于存储文本数据,字符串是由一系列字符组成的,可以使用单引号或双引号括起来,字符串是PHP中最常用的数据类型之一,可以用于存储文...
    99+
    2023-11-02
    基本数据类型 php
  • Swift基本数据类型有哪些
    这篇文章主要介绍Swift基本数据类型有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Swift 基本数据类型1. 整型var intType: Int = 11print...
    99+
    2023-06-25
  • numpy基本数据类型有哪些
    numpy基本数据类型有bool、int、uint、float和complex。详细介绍:1、bool,用于表示逻辑值,值为True或False;2、int,用于表示整数值,可以是有符号或无符号整数;3、uint,用于表示无符号整数值;4、...
    99+
    2023-11-21
    numpy
  • Java基本数据类型有哪些
    本篇内容介绍了“Java基本数据类型有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Java 基本数据类型变量就是申请内存来存储值。也就...
    99+
    2023-06-02
  • redis基本数据类型有哪些
    redis基本数据类型有:1、String;2、List;3、Set;4、Hash;5、Sorted Set。详细介绍:1、String,这是Redis最基本的数据类型,可以存储任何类型的数据,包括字符串、数字和二进制数据等;2、List,...
    99+
    2023-12-18
    Redis 基本数据类型
  • SQL基本的数据类型有哪些
    SQL基本的数据类型有以下几种:1. 整数类型:包括INT、SMALLINT、TINYINT、BIGINT等。2. 浮点类型:包括F...
    99+
    2023-10-10
    SQL
  • mysql有哪些基本的数据类型
    本文主要给大家介绍mysql有哪些基本的数据类型,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下mysql有哪些基本的数据类型吧。数值类型整数类型ti...
    99+
    2022-10-18
  • ecmascript的基本数据类型有哪些
    这篇文章主要为大家展示了“ecmascript的基本数据类型有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ecmascript的基本数据类型有哪些”这篇文...
    99+
    2022-10-19
  • Redis中的基本数据类型有哪些
    这篇文章主要讲解了“Redis中的基本数据类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis中的基本数据类型有哪些”吧!Redis数据结构简...
    99+
    2022-10-19
  • JavaScript中的基本数据类型有哪些
    小编给大家分享一下JavaScript中的基本数据类型有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、区分大小写在JavaScript中,所有的一切(变量、函数和操作符)都区分大小...
    99+
    2022-10-19
  • java中的基本数据类型有哪些
    这篇文章主要介绍java中的基本数据类型有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!基本数据类型1.整数类型:byte、short、int、long注意:1.java各整数类...
    99+
    2022-10-19
  • java中有哪些基本数据类型
    java的基本数据类型:1.字节型byte;2.短整型short;3.整型int;4.长整型long;5.单精度浮点型float;6.双精度浮点型double;7.布尔型boolean;8.字符型char;java中基本数据类型有:字节型b...
    99+
    2022-10-07
  • javascript都有哪些基本数据类型
    本篇内容主要讲解“javascript都有哪些基本数据类型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript都有哪些基本数据类型”吧! ...
    99+
    2022-10-19
  • VB.NET基本数据类型都有哪些
    VB.NET基本数据类型都有哪些,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。VB.NET基本数据类型的重要方法和属性举例 Dim i As In...
    99+
    2023-06-17
  • JAVA基本数据类型有哪些呢
    本篇文章给大家分享的是有关JAVA基本数据类型有哪些呢,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。关键字(掌握)        (1)...
    99+
    2023-06-02
  • c语言的基本数据类型有哪些
    C语言的基本数据类型有以下几种:1. 整型(int):用于表示整数,包括正整数、负整数和零。可使用关键字int声明,占用4个字节。2...
    99+
    2023-09-20
    c语言
  • Python中的基本数据类型有哪些呢
    今天就跟大家聊聊有关Python中的基本数据类型有哪些呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。基本数字类型首先我们开始认识一下基本的数字类型吧:整数类型浮点数类型复数类型整数...
    99+
    2023-06-03
  • Java基本数据类型的知识点有哪些
    这篇“Java基本数据类型的知识点有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java基本数据类型的知识点有哪些”文...
    99+
    2023-06-27
  • Golang中常用的基本数据类型有哪些
    这篇文章主要讲解了“Golang中常用的基本数据类型有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang中常用的基本数据类型有哪些”吧!Golang 是一种强类型语言,变量使用时...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作