上篇介绍了哪些数据类型,如何进行声明常量和变量,那么接下来进行详细学习下各个数据类型的使用!

一、整数

在go中,整数分为俩类,一个是无符号整数,即0以上数值;另一个是有符号数值,有正有负!

1. 有符号整数

类别类型描述零值示例取值范围
有符号整数int平台相关有符号整数(32位系统=32位,64位系统=64位)042, -1032位系统:-2³¹ ~ 2³¹-1
64位系统:-2⁶³ ~ 2⁶³-1
int88位有符号整数0127, -128-128 ~ 127
int1616位有符号整数032767, -32768-32768 ~ 32767
int3232位有符号整数(别名 rune02147483647-2147483648 ~ 2147483647
int6464位有符号整数09223372036854775807

看着都差不多,但是发现后边携带了8、16、32、64。
这些数值代表什么意思呢?
根据描述,可以发现是8位有符号、16位有符号… 什么意思呢?

大白话说一下这里
在这里插入图片描述
比如int8,这里的8代表在内存中占据8位(1字节),其中最前边的一位位符号位,代表正和负,剩下7位表式数值大小。所以对于负数,采用补码表示,其能表示的范围可以通过计算得出为 -2^7 到 2^7 - 1,即 -128 到 127。

	// 整数var a int8 = 10fmt.Println("a=", a)var b int8 = 128fmt.Println("b=", b)

在这里插入图片描述
可以看到int8内存放不下128的数值,原理如上所述!!!

剩下的int 结尾的16、32、64数值,同理即可得出!

练习代码

	// 整数var a int8 = 10fmt.Println("a=", a)//var b int8 = 128 // 错误 int8内存放不下128的二进制数//fmt.Println("b=", b)// int16var c int16 = 128fmt.Println("c=", c)// int32var d int32 = -521fmt.Println("d=", d)// int64var e int64 = 521fmt.Println("e=", e)// int// 操作系统为32位,int为32位  即: int32// 操作系统为64位,int为64位  即: int64var f int = 521fmt.Println("f=", f)

2. 无符号位

类别类型描述零值示例取值范围
无符号整数uint平台相关无符号整数(大小同 int010032位系统:0 ~ 2³²-1
64位系统:0 ~ 2⁶⁴-1
uint88位无符号整数(别名 byte0255, 0x0A0 ~ 255
uint1616位无符号整数0655350 ~ 65535
uint3232位无符号整数042949672950 ~ 4294967295
uint6464位无符号整数0184467440737095516150 ~ 18446744073709551615
uintptr无符号整数,用于存储指针地址0系统内存地址足够存储指针值的整数

有了上边的知识后,我们再来验证下
在这里插入图片描述
用uint8为例,8位都是数值位,没有符号,也就是说没有负数!算一下能表示的范围可以通过计算得出为0到 2^8 - 1,即0 ~ 255。
在这里插入图片描述
在这里插入图片描述
练习代码

// 无符号整数// uint8//var g uint8 = -1//var g uint8 = 256var g uint8 = 255fmt.Println("g=", g)// uint16var h uint16 = 521fmt.Println("h=", h)// uint32var i uint32 = 521fmt.Println("i=", i)// uint64var j uint64 = 521fmt.Println("j=", j)// uint 和int类似// 操作系统为32位,int为32位  即: int32// 操作系统为64位,int为64位  即: int64var k uint = 521fmt.Println("k=", k)

二、浮点型

浮点型分为了单精度float32和float64,这俩个都是有符号位的。

比如:float32类型,二进制内存分布

 32位二进制 = 1 位用于符号位 + 8 位用于指数部分 + 剩下的 23 位用于尾数部分

32位内存分布如下图
在这里插入图片描述
浮点型最需要注意的是精度,而精度由尾数部分决定小数精度,23 位二进制数对应的十进制有效数字位数大约在 6 - 7 位左右。能比较准确地表示到小数点后第 6 位或者第 7 位,但是从第 7 位或者第 8 位开始可能会出现误差。当你对多个 float32 数进行运算时,小数精度较低的缺点可能会更明显。

接下来我们看下float64二进制内存分布

 64位二进制 = 1 位用于符号位 + 11 位用于指数部分 + 剩下的 52 位用于尾数部分

52 位的尾数部分使得它可以表示更精确的小数。52位二进制转换为十进制后,它可以比较准确地表示到小数点后第 15 位或者第 16 位左右,在很多计算场景下能够提供足够的精度,尤其在科学计算、工程计算等领域,float64 凭借其较高的精度被广泛使用。

练习代码

	// 浮点型// float32var l float32 = 3.1415926535897932384626433832fmt.Println("l=", l)// l= 3.1415927// float64var m float64 = 3.1415926535897932384626433832fmt.Println("m=", m)//m= 3.141592653589793

本篇说明了整数(有符号整数、无符号整数),浮点型(小数),基本覆盖文化数值范围。

本次作业

  1. 熟练使用整型、浮点型进行声明和使用
  2. 有一个数值,可以进行合理分配对应的数据类型(比如:int8、int16等类型)
  3. 知道类型后边的数值含义和进行合理使用
  4. 知道浮点型数据构成(符号位 + 指数部分 + 尾数部分)
  5. 编程中需注意浮点型精度,避免造成精度问题,计算错误 (差以毫厘,失之千里)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/85616.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/85616.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/85616.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++11 GC Interface:从入门到精通

文章目录 一、引言二、C11简介2.1 C11发展历史2.2 C11新特性概述 三、C11中的垃圾收集支持和基于可达性的泄漏检测3.1 背景与原理3.2 相关标准与接口3.3 示例代码 四、C11 GC interface的使用场景4.1 简化内存管理4.2 提高代码可靠性 五、C23中移除垃圾收集支持和基于可达性的泄…

《高并发系统性能优化三板斧:缓存 + 异步 + 限流》

高并发系统性能优化三板斧:缓存 异步 限流 引言 在互联网应用的高并发场景下,系统性能面临巨大挑战。以某电商平台会员活动为例,活动期间瞬时QPS可达10万,若未进行有效优化,服务器将迅速崩溃。本文从缓存、异步、限…

JVM(4)——引用类型

痛点引入: 为什么需要不同的引用类型?直接只用强引用不行吗?(内存泄漏风险、缓存管理粗粒度、对象生命周期监听需求) 核心作用: 解释引用类型如何让程序员与垃圾收集器(GC)协作&…

ONLYOFFICE 文档 9.0 版本已发布:新界面、图表查看器、.md 文件支持、AI 表格与宏等更新

ONLYOFFICE 文档 9.0 版本已正式发布。此次更新包含 20 多项新功能和约 500 项修复,全面提升您的办公效率。从全新界面、突破性的 AI 工具到更广泛的文件格式兼容性,本次发布将带来更加流畅的使用体验。阅读本文,了解详情。 更新全部编辑器的…

关于python-socket服务的问题记录

概述 在使用pythonwebsocket部署socket服务,前端使用小程序来连接,过程中存在以下可能出现的问题: 1,代码里socket端口问题2,服务器配置问题(域名解析?Nginx配置是否正确处理了WebSocket升级头…

typescript vs go vs rust

typescript 后端选型: Express &Typescript &trpc 广泛使用,灵活,快速,稳定 Nestjs 企业级,标准化,像java ,依赖注入, Hono , web standards framework. Support for any J…

OpenGL和OpenGL ES区别

OpenGL(Open Graphics Library)和OpenGL ES(OpenGL for Embedded Systems)都是用于图形渲染的API,但它们的目标平台和设计定位有所不同。 1. 目标平台 OpenGL 主要用于桌面平台(如Windows、macOS、Linux&a…

PyTorch 入门之官方文档学习笔记(一)

目录 1 张量 1)张量的初始化和属性 2)张量操作 3)使用 NumPy 进行桥接 2 torch.autograd 1)背景 2)在 PyTorch 中的使用 3)Autograd 的微分机制 4)计算图原理 5)从计算图中…

King’s LIMS 系统引领汽车检测实验室数字化转型

随着汽车保有量的持续攀升和车龄的增长,消费者对汽车的需求已悄然转变,从最初对外观和性能的追求,逐渐深化为对安全性、可靠性、耐久性、性能与舒适性以及智能化功能的全方位关注。这无疑让汽车检测行业在保障车辆质量、满足市场需求方面肩负…

Neo4j常见语句-merge

merge用法&#xff1a;MERGE 是 Neo4j 中一个强大的操作符&#xff0c;用于确保图中存在特定的节点或关系。它的核心逻辑是&#xff1a;如果目标存在则匹配&#xff0c;不存在则创建 基本语法与逻辑&#xff1a; MERGE <pattern> [ON CREATE <create_clause>] //…

Mem0多级记忆实现机制详解

在人工智能交互场景中,记忆能力是实现个性化服务与智能决策的关键。Mem0 通过设计分层记忆架构,实现了对用户、会话和智能体状态的多级管理。各层级记忆既相互独立存储,又通过精密的关联机制协同运作,确保在不同场景下都能提供精准的上下文支持,显著提升 AI 交互的智能性与…

Python 爬虫入门 Day 5 - 使用 XPath 进行网页解析(lxml + XPath)

Python 第二阶段 - 爬虫入门 &#x1f3af; 今日目标 掌握 XPath 的基本语法使用 lxml.etree 解析 HTML&#xff0c;提取数据与 BeautifulSoup 比较&#xff1a;谁更强&#xff1f; &#x1f4d8; 学习内容详解 ✅ 安装依赖 pip install lxml&#x1f9e9; XPath 简介 XPa…

变幻莫测:CoreData 中 Transformable 类型面面俱到(六)

概述 各位似秃似不秃小码农们都知道&#xff0c;在苹果众多开发平台中 CoreData 无疑是那个最简洁、拥有“官方认证”且最具兼容性的数据库框架。使用它可以让我们非常方便的搭建出 App 所需要的持久存储体系。 不过&#xff0c;大家是否知道在 CoreData 中还存在一个 Transfo…

Vuex(一) —— 集中式的状态管理仓库

目录 Vue组件间通信方式回顾 组件内的状态管理流程组件间通信方式 父组件给子组件传值 (最简单的一种方式)子组件给父组件传值不相关组件之间传值其他常见方式($ref) 简易的状态管理方案 上面组件间通信方式的问题集中式的状态管理方案 Vuex 什么是Vuex?什么情况下使用Vuex?…

操作系统---内存管理上

文章目录 1. 内存的基础知识1.1 什么是内存&#xff0c;有何作用1.2 进程运行的基本原理1.2.1 指令的工作原理1.2.2 逻辑地址 VS 物理地址 1.3 如何实现地址转换&#xff08;逻辑 -> 物理&#xff09;1.3.1 绝对装入1.3.2 可重定位装入&#xff08;静态重定位&#xff09;1.…

医学图像处理期末复习

目录 考试范围第1章 绪论1.1 数字图像处理的概念1.2 数字图像处理的应用领域1、医学领域2、其他领域 1.3 数字图像处理基础1.4 数字图像基础运算 第2章 医学图像灰度变换与空间滤波2.1 医学图像灰度变换线性灰度变换非线性灰度变换 2.2 直方图均衡化√2.3 空间平滑滤波线性空间…

类图:软件世界的“建筑蓝图”

本文来自「大千AI助手」技术实战系列&#xff0c;专注用真话讲技术&#xff0c;拒绝过度包装。 类图&#xff08;Class Diagram&#xff09;&#xff1a;软件世界的“建筑蓝图” 类图&#xff08;Class Diagram&#xff09;是统一建模语言&#xff08;UML&#xff09; 中最重要…

利用DevEco Studio对RK3588的HiHopesOS-4.1.110(OpenHarmony)进行Qt程序编写

文章目录 热身准备添加Qt库运行qml程序 热身 可以先看我这篇文章【DevEco Studio中使用Qt&#xff0c;编写HarmonyOS程序】 准备 板子的主要信息 目前由于系统版本&#xff08;API 11&#xff09;及其他原因&#xff0c;只能用4.1版本的DevEcoStudio来编写&#xff0c;更高…

设计模式精讲 Day 5:原型模式(Prototype Pattern)

【设计模式精讲 Day 5】原型模式&#xff08;Prototype Pattern&#xff09; 文章内容 在“设计模式精讲”系列的第5天&#xff0c;我们将深入讲解原型模式&#xff08;Prototype Pattern&#xff09;。作为创建型设计模式之一&#xff0c;原型模式通过复制已有对象来创建新对…

深度学习——第2章习题2-1分析为什么平方损失函数不适用于分类问题

深度学习——第2章习题2-1 《神经网络与深度学习》——邱锡鹏 2-1 分析为什么平方损失函数不适用于分类问题。 平方损失函数&#xff08;Quadratic Loss Function&#xff09;经常用在预测标签y为实数值的任务中&#xff0c;定义为 L ( y , f ( x ; θ ) ) 1 2 ( y − f (…