当前位置: 首页 > news >正文

【Go】Go语言中的基本数据类型与类型转换

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,Golang开发,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K8S,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:Go语言开发零基础到高阶实战
景天的主页:景天科技苑

在这里插入图片描述

文章目录

  • go数据类型
    • 布尔数据类型
    • 整形 int
    • 浮点型
      • 验证:浮点数计算时不精确的
    • 特殊的数字类型
    • 字符串类型
    • 转义字符
  • go数据类型转换

go数据类型

Go语言是一种静态类型、编译型语言,它提供了丰富的数据类型用于处理各种数据。
在Go中,数据类型主要分为两大类:基本数据类型和派生数据类型。值类型包括整型、浮点型、布尔型、字符串等,而派生数据类型则包括指针、数组、结构体、函数、切片、映射、通道和接口等。本文将通过实际案例详细讲解Go语言中的基本数据类型及其用法。
在这里插入图片描述

布尔数据类型

布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
bool的默认值是false

package mainimport "fmt"func main() {// bool类型,只有两个值 true 和 false。  对和错// 定义变量  bool 布尔类型的定义 与 int、string 都是Go语言中基本数据类型。var b1 boolvar b2 boolb1 = trueb2 = false// f 格式化输出  %d 整数  %s 字符串 %p内存地址  %T 类型 %t bool值fmt.Printf("b1=%T,%t\n", b1, b1)fmt.Printf("b2=%T,%t\n", b2, b2)// 比大小var a int = 1var b int = 2// 如果  xxx  否则 xxx// 结果就是bool类型fmt.Println(a > b)if a > b {fmt.Println("a是大于b的")// .....} else {fmt.Println("a是小于b的")}// bool 类型的默认值 false, 规定  false  0   true = 1var b3 boolfmt.Println("bool默认值:", b3)}

在这里插入图片描述

整形 int

整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。

Go 也有基于架构的类型,例如:uint 无符号、int 有符号

每个数字,都是有范围的, 有的数字只能大于0

有的数字可以小于0

在计算机中,所有的东西最终都是存在内存当中的,所以我们不能无限的放置东西(数字)
在这里插入图片描述
在这里插入图片描述

定义整形变量,超过范围会报错,定义的时候不报错,运行的时候报错

package mainimport "fmt"func main() {// 定义的时候超过限制是不会报错的,但是在运行时发生了错误 expected 'package', found 'EOF'// 计算只能存放固定大小的值。// 我们在定义这个类型的时候,系统给了我们一个空间var a int = 666666666666666666666663333333333fmt.Println(a)}

在这里插入图片描述

package mainimport "fmt"func main() {// 定义的时候超过限制是不会报错的,但是在运行时发生了报错// 计算只能存放固定大小的值。// 我们在定义这个类型的时候,系统给了我们一个空间//var a int64 = 666666666666666666666663333333333//fmt.Println(a)var i1 int8 //  (-128 到 127)i1 = -100fmt.Println(i1)//i1 = 1000//fmt.Println(i1)// 由于系统现在空间都很大,默认都使用 int64  int。// 二进制的8位  00000000// 二进一 01// 00000000// 0   0// 1   1// 2   10// 3   11// 4  100// 0~255// 00000000 - 11111111// int16  0000000000000000 - 1111111111111111// int32  00000000000000000000000000000000 - 11111111111111111111111111111111// int64// >0 无符号数+  有符号数 + -// 定义这个变量的时候,空间大小已经被这个数据类型确定了。var i2 uint8 // 0 ~ 255i2 = 255fmt.Println(i2)}

在这里插入图片描述

浮点型

浮点型用于表示有小数部分的数。Go语言提供了float32和float64两种浮点型,分别占用32位和64位存储空间。
默认情况下,Go语言中的浮点字面量被当作float64类型。

浮点数 float :float32 float64 ,也是一个空间的大小。

package mainimport "fmt"// 浮点数 float ,默认是 float64 ,32
func main() {// 浮点数是不精确的,计算机底层导致的 0 1、浮点数、复数,没办法做到精确计算var f1 float64f1 = 3.16var f2 float32f2 = 5fmt.Println(f1)// // 默认的 float 类型,都是保留了6位小数// 浮点数的格式化输出 %f ,都是保留了6位小数,保留2位或者3位怎么实现// .3 保留3位小数 其余类推// 如果小于了当前保留的位数,四舍五入fmt.Printf("%T,%.1f\n", f1, f1)fmt.Printf("%T,%f", f2, f2)}

在这里插入图片描述

验证:浮点数计算时不精确的

package mainimport "fmt"func main() {// 浮点数 ; 符号位  + 指数位 + 尾数位(存储过程中,可能会丢失,造成精度损失)。// float64 的空间 > float32var num1 float32 = -123.0000901var num2 float64 = -123.0000901fmt.Println(num1)fmt.Println(num2)// 结论:// 1、使用float来计算,可能导致数据不精确。// 2、float64的精度>float32, go语言中,浮点数默认使用的是float64
}

在这里插入图片描述

特殊的数字类型

byte 就是uint8
rune 就是int32

package mainimport "fmt"// byte
func main() {// 别名uint8是byte,十分常用// byte = uint8 (0-255之间的整数,我们通常使用byte来定义) uint8var num1 byte = 255fmt.Println(num1)fmt.Printf("%T\n", num1)// 不经常用 rune int32var num2 rune = 1000000000fmt.Println(num2)fmt.Printf("%T\n", num2)// int、系统大小来的,32位  32、64默认是64// 软件跑在32位系统上是不兼容的var num3 int = 100000fmt.Println(num3)fmt.Printf("%T\n", num3)
}

在这里插入图片描述

64位的操作系统是可以兼容32位的、32为不能跑64位的软件。 寻址空间。

字符串类型

字符串就是一串固定长度的字符连接起来的字符序列。 一段中文或者英文 (编码- 字符)

Go语言中,所有的字符串都是由单个 字符 连接起来的。兼容全世界文字的,Go语言默认用的是utf-8编码
UTF-8编码 , 目前兼容我们绝大部分的文字和符号。

GBK编码:中国的编码表,号称兼容所有的中文汉字。

Unicode编码表 :号称兼容了全世界的文字。

编码 中 本质是一个数字

Go语言中,所有的字符串都是由单个 字符 连接起来的
Go语言中,单引号是字符、双引号才是 string 类型
字符本质是整型

package mainimport "fmt"func main() {var str stringstr = "Hello,World"fmt.Printf("%T,%s\n", str, str)// H E L L O , W O R L D// Go语言中,所有的字符串都是由单个 字符 连接起来的。// 单引号是字符、双引号才是 string 类型// 字符本质是整型v1 := 'A'v2 := "A"fmt.Printf("%T,%d\n", v1, v1)fmt.Printf("%T,%s\n", v2, v2)v3 := '景'fmt.Printf("%T,%d\n", v3, v3)
}

在这里插入图片描述

转义字符

常见的转义字符
在这里插入图片描述

package mainimport "fmt"func main() {// 特殊的字符 转义字符 \n// \n 换行fmt.Println("hello\nworld")// \b   backspace  删除上一个字符fmt.Println("hello\bworld")// \t  Tabfmt.Println("hello\tworld")
}

在这里插入图片描述

多行输入使用 ``
在这里插入图片描述

多行文本

package mainimport "fmt"func main() {// 特殊的字符 转义字符 \n// \n 换行fmt.Println("hello\nworld")// \b   backspace  删除上一个字符fmt.Println("hello\bworld")// \t  Tabfmt.Println("hello\tworld")// 转义,就是可以将特殊转义符号或者一些符号打印出来 \// ` ` 可以通过它来定义一些长字符串,可以换行输入fmt.Println(`\\nsadadasdasdasdasdasda`)
}

在这里插入图片描述

go数据类型转换

在必要以及可行的情况下,一个类型的值可以被转换成另一种类型的值

由于Go语言不存在隐式类型转换,因此所有的类型转换都必须显式的声明: A = A(B)
布尔类型不支持类型转换

package mainimport "fmt"// 类型转换
func main() {// 数据类型转换在Go中就一个格式// 新类型的值 = 新类型(旧类型的值)// 高位向低位转 (int64  int32  int16)// 浮点数转整数,截断,只保留整数部分a := 5.9    // floatb := int(a) // b 就是int类型的a = 5fmt.Printf("%T,%.1f\n", a, a)fmt.Printf("%T,%d\n", b, b)c := 1d := float64(c)fmt.Printf("%T,%d\n", c, c)fmt.Printf("%T,%f\n", d, d)// 布尔类型转换,布尔类型 是不支持类型转换的。//var flag bool = true//f := int(flag)}

在这里插入图片描述

相关文章:

【Go】Go语言中的基本数据类型与类型转换

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

【Python中导入Tkinter模块创建计算器界面】

使用Tkinter库创建计算器界面涉及布局多个控件(如按钮、输入框和标签)以形成一个用户友好的界面。以下是一个基本的步骤和示例代码,展示了如何使用Tkinter创建一个简单的计算器界面。 步骤 导入Tkinter库:首先,你需要…...

中关村科金推出得助音视频鸿蒙SDK,助力金融业务系统鸿蒙化提速

鸿蒙生态大势所趋,各种应用适配加速 近日,华为纯血鸿蒙系统(HarmonyOS NEXT)再度引发市场高度关注。据媒体消息,鸿蒙NEXT Beta版将在9月24日对Mate 60系列、X5系列、Pura70系列等16款旗舰机型进行推送,这已…...

如何实现视频数据的PES打包和传输?

实现视频的PES(Packetized Elementary Stream)打包和传输涉及多个步骤,主要包括视频数据的编码、PES打包、以及通过网络协议的传输。以下是大概的实现思路: 一、视频数据编码 原始视频数据获取: 获取需要传输的原始视…...

【软考】程序设计语言基础

【软考】程序设计语言基础 一.程序设计语言基础概念 计算机要通过程序或指令来控制才能完成各种任务。程序设计语言(计算机语言):人与机器交换信息的语言。 1.程序设计语言 计算机语言大致分为机器语言、汇编语言和高级语言三种。机器语言…...

野指针与空指针的异同

1、什么是野指针 在了解什么是野指针之前我们要知道什么是指针即指针的定义是什么。 指针:是一种特殊的变量类型,它存储的是一个内存地址,该地址指向另一个变量的位置。可以通过指针来间接访问和修改该地址所指向的变量的值。 PS&#xff…...

虚拟存储器“大观”,讲解核心逻辑知识和408大题方法

虚拟存储器 写在前面:虚拟存储器(Virtual Memory)是计算机系统中用于管理内存的一种技术,它通过虚拟地址空间为进程提供比物理内存更大的地址空间,同时实现内存保护和进程隔离。 在408整个体系中计组和操作系统都有涉…...

【AI赋能医学】基于深度学习和HRV特征的多类别心电图分类

一、数据集简介 论文中使用了来自三类不同心电图记录的162条数据,这些数据来自三个公开的数据库: MIT-BIH 心律失常数据库 (ARR) 96条记录,主要包含不同类型的心律失常样本。 MIT-BIH 正常窦性心律数据库 (NSR) 36条记录,包含健…...

速盾:做外贸用高防cdn需要国外节点的吗?

在进行外贸业务时,使用高防CDN(Content Delivery Network)可以带来很多好处,如提高网站的访问速度、降低服务器负载、保护网站安全等。然而,是否需要国外节点的高防CDN则取决于具体的需求和情况。 高防CDN是通过在全球…...

单片机中为什么要使用5v转3.3v,不直接使用3.3V电压

5V和3.3V是常见的电压水平,在技术上都有其特定的应用场景。为了保护电路、提升效能和确保系统的稳定运行,经常需要将5V转换为3.3V。 1.为什么要5V来供电 使用5V是因为部分传感器需要5V的供电,并且我们数据线一般都输出5V电压,而…...

SpringBoot项目请求返回json空字段过滤

接口返回的json中有的字段可能是为空的,我们不希望他为空的还返回,如下例子: 解决方案:只需要加一个配置类就行: import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.Dese…...

linux下进程详解

在 Linux 系统中,进程是计算机执行程序的基本单位。理解进程的概念和管理方法对系统管理员和开发者都非常重要。下面是对 Linux 下进程的详细介绍: 进程的基本概念 进程:进程是程序在计算机上执行的一个实例。每个进程都有自己独立的内存空间…...

春招审核流程优化:Spring Boot系统设计

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理大学生入学审核系统的相关信息成为必然。开…...

QT:音视频播放器

目录 一.播放器设计 二.需要使用的控件 三.选择视频 四.播放视频 五.暂停视频 六.关闭视频 七.播放状态设置 八.切换视频(上一首) 九.切换视频(下一首) 十.设置视频滑块 十一.更新滑块显示 十二.实现效果 十三.代码设计 1.mainwindow.h 2.mainwindow.cpp 一.播放…...

大模型入门 ch 03:注意力机制

本文是github上的大模型教程LLMs-from-scratch的学习笔记,教程地址:教程链接 Chapter 3: Attention Mechanism 本文首先从固定参数的注意力机制说起,然后拓展到可以训练的注意力机制,然后加入掩码mask,最后…...

STM32点亮第一个LED

还有第二个,并轮换。 准备入门STM32,于是拿出了买到手至少2年的洋桃M1板子,STM32F103C8T6 配置有3个LED,3个按钮,RS232,RS485,CAN,有JTAG,有RTC电池,IO口引…...

[Linux]:动静态库

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 动静态库的介绍 一般而言,库分为动态库和静态库。 在Linux当中…...

windows 显示进程地址空间

windows 显示进程地址空间 windows 显示进程地址空间 文章目录 windows 显示进程地址空间显示进程地址空间 显示进程地址空间 /* 3-ProcessInfo.cpp 显示进程地址空间 */#include "..\\CommonFiles\\CmnHdr.h" #include "..\\CommonFiles\\Toolhelp.h"#i…...

Android 12 SystemUI下拉状态栏禁止QuickQSPanel展开

1.概述 遇到需求,QuickQSPanel首次下拉后展示快捷功能模块以后就是显示QuickQSPanel,而不展开QSPanel,接下来要从下滑手势下拉出状态栏分析功能实现。也就是直接是展开状态。 2、涉及核心类 frameworks\base\packages\SystemUI\src\com\and…...

二分思想与相关问题(下)

接下来详细讲解几道比较难的例题,仔细体会二分和其他概念混合在一起的趣味。 下面这道题涉及了“碎片拼接”的概念,很妙,也很难想。 P r o b l e m 5 Problem5 Problem5 同时运行N台电脑的最长时间 LeetCode2141 你有 n 台电脑。给你整数 n…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...

LangFlow技术架构分析

🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...