编程笔记 Golang基础 016 数据类型:数字类型

2024-02-22 14:44

本文主要是介绍编程笔记 Golang基础 016 数据类型:数字类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编程笔记 Golang基础 016 数据类型:数字类型

      • 1. 整数类型(Integer Types)
        • a) 固定长度整数:
        • b) 变长整数:
      • 2. 浮点数类型(Floating-Point Types)
      • 3. 复数类型(Complex Number Types)
      • 4. 类型转换
      • 5. 数字字面量
      • 6. 注意事项
      • 实例

在Go语言中,数字类型是其丰富数据类型的一部分,主要用于表示数值。

以下是Go语言中主要的数字类型详解:

1. 整数类型(Integer Types)

a) 固定长度整数:
  • 有符号整数

    • int8:8位带符号整数,范围从-128到127。
    • int16:16位带符号整数,范围从-32,768到32,767。
    • int32:32位带符号整数,范围从-2,147,483,648到2,147,483,647。
    • int64:64位带符号整数,范围从-9,223,372,036,854,775,808到9,223,372,036,854,775,807。
  • 无符号整数

    • uint8byte:8位无符号整数,范围从0到255。
    • uint16:16位无符号整数,范围从0到65,535。
    • uint32:32位无符号整数,范围从0到4,294,967,295。
    • uint64:64位无符号整数,范围从0到18,446,744,073,709,551,615。
b) 变长整数:
  • intuint:长度取决于运行时平台,在32位系统上通常是32位,在64位系统上通常是64位。
  • uintptr:无符号整数类型,足够容纳指针值。它的大小同样依赖于目标架构。

2. 浮点数类型(Floating-Point Types)

  • float32:遵循IEEE-754标准的32位浮点数,提供大约7个有效数字精度。
  • float64:遵循IEEE-754标准的64位浮点数,通常提供约15位有效数字精度,这是Go语言中最常用的浮点数类型。

3. 复数类型(Complex Number Types)

  • complex64:由两个32位浮点数(实部和虚部)组成的复数,每个部分分别使用float32存储。
  • complex128:由两个64位浮点数(实部和虚部)组成的复数,每个部分分别使用float64存储。

4. 类型转换

不同类型的数字之间不能隐式转换,需要通过显式类型转换操作来完成,例如:

var i int32 = 100
var u uint64 = uint64(i)

5. 数字字面量

Go语言支持以十进制、八进制(前缀0o0O)、十六进制(前缀0x0X)等方式书写数字字面量。

6. 注意事项

在使用数字类型时,需要注意可能发生的溢出错误。Go语言不会阻止整数类型的溢出操作,而是采用无符号整数的模运算方式处理,这意味着当增加一个正数超过最大值或减少一个负数低于最小值时,数值会“绕回”到相应的另一端。对于防止溢出,程序员应自行确保计算过程的安全性。

实例

package mainimport ("fmt""math""unsafe"
)func main() {var i8 int8var i16 int16var i32 int32var i64 int64var ui8 uint8var ui16 uint16var ui32 uint32var ui64 uint64fmt.Printf("%T %dB %v~%v\n", i8, unsafe.Sizeof(i8), math.MinInt8, math.MaxInt8)fmt.Printf("%T %dB %v~%v\n", i16, unsafe.Sizeof(i16), math.MinInt16, math.MaxInt16)fmt.Printf("%T %dB %v~%v\n", i32, unsafe.Sizeof(i32), math.MinInt32, math.MaxInt32)fmt.Printf("%T %dB %v~%v\n", i64, unsafe.Sizeof(i64), math.MinInt64, math.MaxInt64)fmt.Printf("%T %dB %v~%v\n", ui8, unsafe.Sizeof(ui8), 0, math.MaxUint8)fmt.Printf("%T %dB %v~%v\n", ui16, unsafe.Sizeof(ui16), 0, math.MaxUint16)fmt.Printf("%T %dB %v~%v\n", ui32, unsafe.Sizeof(ui32), 0, math.MaxUint32)fmt.Printf("%T %dB %v~%v\n", ui64, unsafe.Sizeof(ui64), 0, uint64(math.MaxUint64))var f32 float32var f64 float64fmt.Printf("%T %dB %v~%v\n", f32, unsafe.Sizeof(f32), -math.MaxFloat32, math.MaxFloat32)fmt.Printf("%T %dB %v~%v\n", f64, unsafe.Sizeof(f64), -math.MaxFloat64, math.MaxFloat64)var ui uintui = uint(math.MaxUint64) //再+1会导致overflows错误fmt.Printf("%T %dB %v~%v\n", ui, unsafe.Sizeof(ui), 0, ui)var imax, imin intimax = int(math.MaxInt64) //再+1会导致overflows错误imin = int(math.MinInt64) //再-1会导致overflows错误fmt.Printf("%T %dB %v~%v\n", imax, unsafe.Sizeof(imax), imin, imax)
}

运行结果:

int8 1B -128~127
int16 2B -32768~32767
int32 4B -2147483648~2147483647
int64 8B -9223372036854775808~9223372036854775807
uint8 1B 0~255
uint16 2B 0~65535
uint32 4B 0~4294967295
uint64 8B 0~18446744073709551615
float32 4B -3.4028234663852886e+38~3.4028234663852886e+38
float64 8B -1.7976931348623157e+308~1.7976931348623157e+308
uint 8B 0~18446744073709551615
int 8B -9223372036854775808~9223372036854775807

这篇关于编程笔记 Golang基础 016 数据类型:数字类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735574

相关文章

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

Python如何查看数据的类型

《Python如何查看数据的类型》:本文主要介绍Python如何查看数据的类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python查看数据的类型1. 使用 type()2. 使用 isinstance()3. 检查对象的 __class__ 属性4.

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典