IT干货栈 · 2019年09月30日

Go语言入门教程(五)

Go语言系列教程(五)

原创: IT小栈君

file

Hello,各位小伙伴,大家好,我是小栈君,马上就是我们伟大祖国的70华诞了,所以在这里小栈君也祝愿大家有一个愉快的国庆节。

当然在放假的同时也别忘了学习哦,小栈君在这里也会陪着大家一起学习和进步。闲话不多说,我们开始今天的分享。

上一期我们讲了关于go语言的常量、枚举和基础数据类型,本期我们接着上期所讲的数据类型进行统一讲解一番。

总体来讲,Go语言的数据类型主要分为,布尔类型、字符类型、整型、浮点型、字符串类型和复数类型这几种。我们这次主要来以此实例化一下这几个类型。

布尔类型

我们先用代码表示一下布尔类型定义
方法一 自己定义

var  tag  bool // 定义一个布尔类型的标志
tag = true  // 进行赋值
fmt.println(tag) // 打印

方法二 利用系统进行推导


tag = (1 == 2 ) // 先进性比较 得出比较结果 然后赋值给tag
fmt.println(tag) // 打印

各位小伙伴请注意,布尔值类型不能接受其他类型的赋值,不支持自动或则强制类型转换。

说到这里,兴许有的小伙伴会想到我们在数据库中会用到 0表示true 1表示false ,所以这里小栈君给大家提个醒哦。

file

整型

Go语言同时提供了有符号和无符号的整数类型,其中包括 int8、int16、int32 和 int64 四种大小截然不同的有符号整数类型。

分别对应 8、16、32、64 bit(二进制位)大小的有符号整数,与此对应的是 uint8、uint16、uint32 和 uint64 四种无符号整数类型。

此外还有两种整数类型 int 和 uint,它们分别对应特定 CPU 平台的字长(机器字大小),其中 int 表示有符号整数,应用最为广泛,uint 表示无符号整数。

实际开发中由于编译器和计算机硬件的不同,int 和 uint 所能表示的整数大小会在 32bit 或 64bit 之间变化。

大多数情况下,我们只需要 int 一种整型即可,它可以用于循环计数器(for 循环中控制循环次数的变量)、数组和切片的索引,以及任何通用目的的整型运算符,通常 int 类型的处理速度也是最快的。

用来表示 Unicode 字符的 rune 类型和 int32 类型是等价的,通常用于表示一个 Unicode 码点。

这两个名称可以互换使用。同样,byte 和 uint8 也是等价类型,byte 类型一般用于强调数值是一个原始的数据而不是一个小的整数。

在go语言中整型就是没有小数点的整数类型,它的定义也是有两种类型,第一种是自定义类型,第二种的系统推导类型


size  int64 = 1024
carry       = -1 // 整型常量, 自动推导类型



浮点型

资料显示Go语言提供了两种精度的浮点数 float32 和 float64,它们的算术规范由 IEEE754 浮点数国际标准定义,该浮点数规范被所有现代的 CPU 支持。

这些浮点数类型的取值范围可以从很微小到很巨大。浮点数的范围极限值可以在 math 包找到,常量 math.MaxFloat32 表示 float32 能表示的最大数值,大约是 3.4e38。

对应的常量 math.MaxFloat64 表示 float64 能表示的最大数值,大约是 1.8e308。float32 和 float64 分别能表示的最小值约为 1.4e-45 和 4.9e-324。

file

file

但是小伙伴请注意的一点是 在go语言自动推导的过程中如果我们定义一个数字为16,想要他是16.0的话只能通过自定义类型,如果是系统推导的话会当做整型处理。所以大家值得注意一下。

file

字符类型

在go语言中支持两种字符类型,一种是 uint8 类型,或者叫 byte 型,代表了 ASCII 码的一个字符。,另一个是rune代表单个Unicode的值。

代表一个 UTF-8 字符。当需要处理中文、日文或者其他复合字符时,则需要用到 rune 类型。rune 类型实际是一个 int32。

讲到这里大家可能有点不太明白rune的用法了 举个栗子说明吧,有时候我们写中文,在计数的时候我们需要判断有多少个字节呢,又或者多少个字节代表一个汉字呢。

其实在go语言中一个汉字代表3个字节,但是我们就是想要计数成一个字节。这个时候就可以用rune来进行实现了,当然除了中文,其他国家的文字都可以进行处理。

file

字符串

在go语言中字符串也是一种基础类型,同样的他也能够自定义类型和系统推导,小栈君特意为大家准备了一个大栗子,又顺便解释了一下关于rune的用法,如图所示:

file

其中可以看到我们定义的字符串如果没有用rune来包装一下,在取值的时候会出现乱码的情况,而且一个小知识点是反引号的使用。

他可以原样输出我们们转义字符,在我们需要大片文章的同时,可以不用在意转义的使用,是不是很方便呢。

复数类型

复数类型主要是在科学计算中使用,比如后面我们会讲到的欧拉公式使用代码进行表示是怎么样的等。

在go语言中复数实际上由两个实数(在计算机中用浮点数表示)构成,一个表示实部(real),一个表示虚部(imag)。

var v1 complex64 // 由2个float32构成的复数类型
v1 = 3.12 + 6i
v2 := 3.12 + 12i        // v2是complex128类型
v3 := complex(3.12, 12) // v3结果同v2

fmt.Println(v1, v2, v3)
//内置函数real(v1)获得该复数的实部
//通过imag(v1)获得该复数的虚部
fmt.Println(real(v1), imag(v1))

以上就是今天的分享啦,涉及到点还是有点多,希望小伙伴能够好好消化。


往期精彩回顾 跟多干货知识尽在“IT干货栈”
这里每天会分享包含java,go,Python,大数据,人工智能的相关干货,我们一起提高,一起进步。我是小栈君,我们明天再见,拜了个拜。

file

推荐阅读
关注数
4
文章数
15
公众号“IT干货栈”,每天分享java、go、Python,大数据、人工智能等系列干货,你我共同进步
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息