【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)}

在这里插入图片描述

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

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

相关文章

IDEA创建MAVEN项目

这里介绍如何使用IDEA创建MEAN工程,这里以创建模块举例,创建项目步骤相当; 创建项目 File-项目-new-module 这里选择普通java项目,Archetype选quickstart 项目介绍 create后可以看到创建的demo1 及其目录结构 里面默认的App里…

C++设计模式——Mediator中介者模式

一,中介者模式的定义 中介者模式是一种行为型设计模式。它通过一个中介者对象将多个对象之间的交互关系进行封装,使得对象之间的交互需要通过中介者对象来完成。该设计模式的结构很容易理解,以中介者为中心。 中介者模式的设计思想侧重于在…

【爬虫软件】小红书按关键词批量采集笔记,含笔记正文、转评赞藏等!

一、背景介绍 1.1 爬取目标 熟悉我的小伙伴都了解,我之前开发过2款软件: 【GUI软件】小红书搜索结果批量采集,支持多个关键词同时抓取! 【GUI软件】小红书详情数据批量采集,含笔记内容、转评赞藏等! 现在…

【Linux】进程调度与切换

【Linux】进程调度与切换 1. 基本概念2. 进程切换3. 进程调度3.1运行队列实现优先级设计3.2 处理效率问题3.3 活动队列与过期队列3.4 如何解决饥饿问题3.5 active指针和expired指针 1. 基本概念 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个&am…

Linux——高流量 高并发(访问场景) 高可用(架构要求)

高并发通用设计逻辑: 定位单点,拆分问题 架构调整的顺序: 动静分离 // 没有实现动静分离 // 静态请求 交给 nginx或者 httpd 这种对于静态资源处理效率更高的服务,动态请求 交给php-fpm 服务来处理 使用云服务提供商 &#xff…

数据库(DB、DBMS、SQL)

今天我来讲解一下数据库和可视化数据库管理系统的使用 数据库概述 数据库 存储数据的仓库,数据是有组织的存储 DataBase (DB) 数据库管理系统 操纵和管理数据库的大型软件 DataBaseMangement System (DBMS) SQL 操作关系型数据库的编程语言,定义…

探索最佳 Shell 工具:全面测评 Bash、Zsh、Fish、Tcsh 和 Ksh

感谢浪浪云支持发布 浪浪云活动链接 :https://langlangy.cn/?i8afa52 文章目录 1. 简介2. 测评工具3. 测评标准4. Bash 测评4.1 易用性4.2 功能特性4.3 性能4.4 可定制性4.5 社区和支持 5. Zsh 测评5.1 易用性5.2 功能特性5.3 性能5.4 可定制性5.5 社区和支持 6. F…

Java、python、php三个版本 抗震救灾物资管理系统 抗洪救灾物资分配系统 救援物资申请平台(源码、调试、LW、开题、PPT)

💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…

解锁SAP数据的潜力:SNP Glue与SAP Datasphere的协同作用

在各种文章中,我们研究了客户如何利用SNP Glue与基于云的数据仓库和数据湖相结合,以充分利用其SAP数据。SNP Glue 通过高性能集成解决方案帮助客户解锁 SAP 数据孤岛。例如,可以使用SNP Glue先进的增量捕获(CDC)近乎实…

DIC技术助力新能源汽车主机厂力学测试研发与整车性能提升

在新能源汽车研发过程中,非接触式全视场应变DIC测量方案,越来越受到汽车主机厂的信赖与认可。传统接触式传感器,在精度、灵活性和数据处理能力上存在局限。DIC技术可提供精确、高效、全视场、便捷的非接触式测量解决方案。 在汽车研发阶段&a…

算法41:位1的个数

一、需求 编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位的个数(也被称为汉明重量)。 示例 1: 输入:n 11 输出:3 解释:输入的二进制串 1011 中,共有 3 个设置位。示…

生命周期函数

所有继承MonoBehavior的脚本 最终都会挂载到Gameobiject游戏对象上 1.生命周期西数 就是该脚本对象依附的Gameobject对象从出生到消亡整个生命周期中 会通过反射自动调用的一些特殊函数 2.Unity帮助我们记录了一个Gameobject对象依附了哪些脚本 会自动的得到这些对象&#x…

医院管理|基于java的医院管理系统小程序(源码+数据库+文档)

医院管理系统小程序 目录 基于java的医院管理系统小程序 一、前言 二、系统设计 三、系统功能设计 医生信息管理 排班信息管理 科室信息管理 科室预约 病历信息 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取:…

中信银行信用卡中心社招:TAS人才测评系统题库及通关攻略更新了!

中信银行信用卡中心(以下简称“卡中心”)是中信银行在深圳设立的对信用卡业务进行统一管理、集中操作、独立核算的专营机构。2002年底,由中信银行总行与中信嘉华银行在深圳合作筹建成立;卡中心自成立伊始,始终坚持“以…

k8s的环境配置

一、前期系统环境准备 准备3台主机:硬盘50G cpu2个 内存2G 1、3台主机同时配置 1)关闭防火墙与selinux、NetworkManager [rootk8s-master ~]# systemctl stop firewalld[rootk8s-master ~]# systemctl disable firewalldRemoved symlink /etc/systemd/…

git下载安装windows

https://git-scm.com/download/win 接下来傻瓜式安装就可以了

The First项目报告:BlackCardCoin让数字资产多元化

现有的区块链技术存在吞吐量瓶颈、互操作性有限和次优共识机制等问题,导致效率低下,阻碍了真正全球化金融体系的建立。因此,迫切需要一种创新的区块链,能够容纳现代金融的复杂性,包括即时结算、强大的安全措施&#xf…

十二、C语言:内存函数

一、memcpy 1.1 使用 void * memcpy ( void * destination, const void * source, size_t num ); 1.前两个参数类型都是void*,因此可以拷贝任何数据类型; 2.num参数为要拷贝的字节数; int main() {char arr[10] "abcdef";char b…

828华为云征文 | Flexus X的力量,驱动Halo博客在云端飞驰

前言 华为云Flexus云服务器 X实例,以卓越性能与灵活配置,为Halo博客搭建起梦想的云端舞台。在这个828企业上云节节日里,华为云Flexus云服务器 X实例不仅提供了稳定高效的运行环境,更助力Halo博客实现内容创作的无限可能。无论是流…

【Petri网导论学习笔记】Petri网导论入门学习(二)

Petri 网导论学习笔记(二) 如需学习转载请注明原作者并附本帖链接!!! 如需学习转载请注明原作者并附本帖链接!!! 如需学习转载请注明原作者并附本帖链接!!&am…