编程笔记 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

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署