当前位置: 首页 > 面试题库 >

与Go语言中的特定类型(int64 / uint64)相比,常规类型(int / uint)有什么优势?

南门展
2023-03-14
问题内容

据我所知,intuint为64位有符号/无符号整数-就像int64/
uint64。而且我也明白,这int不仅是别名int64(例如byte->
uint8是),因此在适用时int64需要将其转换为int,反之亦然。但是,使用一个相对于另一个有什么好处?使用常规类型是否会影响运行时性能?

抱歉,如果这是一个常见问题-我曾在Google上搜索过答案(并在此处进行搜索),因为我曾以为其他人可能早就出现了,但是没有找到任何人回答它们对性能的影响(
(如果有的话),内存使用情况(我想不是它们都是64位整数吗?)还是编译器如何对待它们。

编辑:我知道int/ unit在32位体系结构上是32位。为了简洁起见,我假设这是一个64位的Golang环境。


问题答案:

int并且uint仅在64位体系结构上为64位。在32位体系结构上,它们是32位。

一般的答案是,除非需要一定的精度,否则在当前体系结构上坚持使用与字大小相同的数据类型(例如,在32位体系结构上为32位)通常会稍微提高效率。



 类似资料:
  • 本文向大家介绍Golang中的int类型和uint类型到底有多大?,包括了Golang中的int类型和uint类型到底有多大?的使用技巧和注意事项,需要的朋友参考一下 在开始之前,我们先来看看uint 与 int 的区别 上面是图,下面是源码: 引言 今天调试一个问题,发现一个我无法理解的情况: 把64位的数字赋值给uint,我理解uint是32位的,为啥可以编译通过?但是我接着又在 playgr

  • 类型断言(Type Assertion)是一个使用在接口值上的操作,用于检查接口类型变量所持有的值是否实现了期望的接口或者具体的类型。 在Go语言中类型断言的语法格式如下: value, ok := x.(T) 其中,x 表示一个接口的类型,T 表示一个具体的类型(也可为接口类型)。 该断言表达式会返回 x 的值(也就是 value)和一个布尔值(也就是 ok),可根据该布尔值判断 x 是否为 T

  • 一个布尔类型的值只有两种:true 或 false。if 和 for 语句的条件部分都是布尔类型的值,并且 和 等比较操作也会产生布尔型的值。 一元操作符 对应逻辑非操作,因此 的值为 false,更复杂一些的写法是 ,实际开发中我们应尽量采用比较简洁的布尔表达式,就像用 x 来表示 。 Go语言对于值之间的比较有非常严格的限制,只有两个相同类型的值才可以进行比较,如果值的类型是接口(interf

  • Go语言提供了两种精度的浮点数 float32 和 float64,它们的算术规范由 IEEE754 浮点数国际标准定义,该浮点数规范被所有现代的 CPU 支持。 这些浮点数类型的取值范围可以从很微小到很巨大。浮点数取值范围的极限值可以在 math 包中找到: 常量 math.MaxFloat32 表示 float32 能取到的最大数值,大约是 3.4e38; 常量 math.MaxFloat64

  • 主要内容:哪些情况下使用 int 和 uintGo语言的数值类型分为以下几种:整数、浮点数、复数,其中每一种都包含了不同大小的数值类型,例如有符号整数包含 int8、int16、int32、int64 等,每种数值类型都决定了对应的大小范围和是否支持正负符号。本节我们主要介绍一下整数类型。 Go语言同时提供了有符号和无符号的整数类型,其中包括 int8、int16、int32 和 int64 四种大小截然不同的有符号整数类型,分别对应 8、1

  • 主要内容:类型断言的书写格式,使用类型分支判断基本类型,使用类型分支判断接口类型type-switch 流程控制的语法或许是Go语言中最古怪的语法。 它可以被看作是类型断言的增强版。它和 switch-case 流程控制代码块有些相似。 一个 type-switch 流程控制代码块的语法如下所示: 输出结构如下: Type Square *main.Square with value &{5} 变量 t 得到了 areaIntf 的值和类型, 所有 case 语句中列举的类型