前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go基础数据类型使用实战:int float bool

Go基础数据类型使用实战:int float bool

作者头像
王中阳Go
发布2022-10-26 15:21:57
7500
发布2022-10-26 15:21:57
举报
文章被收录于专栏:Go语言学习专栏Go语言学习专栏

int

定义int类型

代码语言:javascript
复制
var int1 = 1
fmt.Printf("int1类型:%T\n", int1)

输出结果:

代码语言:javascript
复制
int1类型:int

注意:%T 查看变量的类型

进制转化

代码语言:javascript
复制
var i1 = 101
fmt.Printf("%d\n", i1) //转成十进制
fmt.Printf("%b\n", i1) //把十进制转成二级制
fmt.Printf("%o\n", i1) //把十进制转成八进制
fmt.Printf("%x\n", i1) //把十进制转成十六进制
fmt.Println("-----")

输出结果:

代码语言:javascript
复制
数值为:101
把十进制转成二级制:1100101
把十进制转成八进制:145
把十进制转成十六进制:65

定义八进制

八进制一定是以0开头的,逢八进一位

代码语言:javascript
复制
i2 := 077
fmt.Printf("i2十进制:%d\n", i2)
fmt.Printf("i2八进制:%o\n", i2)
fmt.Printf("i2类型%T\n",i2)

输出结果

代码语言:javascript
复制
i2十进制:63
i2八进制:77
i2类型int

定义十六进制

从0到f,逢十六进一

代码语言:javascript
复制
i3 := 0x1234567
fmt.Printf("i3十进制:%d\n", i3)
fmt.Printf("i3十流进制:%x\n", i3)
// %T 查看变量的类型
fmt.Printf("i3十进制数据类型:%T\n", i3)

输出结果

代码语言:javascript
复制
i3十进制:19088743
i3十六进制:1234567
i3十进制数据类型:int

总结:我们发现直接定义十进制、八进制、十六进制的变量,变量的类型都是int型。

抛出问题

我们怎么定义int8/int16/int32/int64类型的数据呢?

其实非常简单:

代码语言:javascript
复制
i4 := int8(1)
i5 := int16(1)
i6 := int32(1)
i7 := int64(1)
fmt.Printf("i4:%T\n", i4)
fmt.Printf("i5:%T\n",i5)
fmt.Printf("i6:%T\n",i6)
fmt.Printf("i7:%T\n",i7)

输出结果:

代码语言:javascript
复制
i4:int8
i5:int16
i6:int32
i7:int64

抛出问题:go有这么多种int类型,我们怎么选择使用哪种呢?

给出答案:

我们首先要知道这些类型的区别:

  • int8类型大小为 1 字节
  • int16类型大小为 2 字节
  • int32类型大小为 4 字节
  • int64类型大小为 8 字节
  • int类型的大小为 4个字节 或者 8个字节

其中int类型要重点说一下:go语言中的 int 的大小是和操作系统位数相关的,如果是32位操作系统,int 类型的大小就是4字节。如果是64位操作系统,int 类型的大小就是8个字节。

由此我们可以知道,根据自己需要的字节数来选择,当然选择int类型是最省心安全的,但是当我们取值范围小的时候,会浪费存储空间。

float

go中的float可以细分为:float32和float64

定义float

代码语言:javascript
复制
f1 := 1.0
fmt.Printf("f1类型:%T\n", f1) // Go语言中的小数默认类型是:float64

输出结果:

代码语言:javascript
复制
f1类型:float64

分析:在未指定类型定义float时,默认的类型是float64。和int类型的定义是一致的。

反思:这种设计我们也可以很好理解,出于数据安全的考虑,设置数据类型对应的最大内存空间的类型,避免内存溢出等问题。

定义float32类型

聪明的你一定会想到,和定义int8是一样的

代码语言:javascript
复制
f2 := float32(1.4321)
fmt.Printf("%T\n", f2)

输出结果:

代码语言:javascript
复制
f2类型:float32

小技巧

我们可以通过内置的Math函数,获得常用的数值,比如:

代码语言:javascript
复制
var maxFloat = math.MaxFloat32;
println(maxFloat)

输出结果:

代码语言:javascript
复制
+3.402823e+038

注意

在go中,数据类型是有严格的区分的,不同类型之间是不能互相转换的,比如:

image.png

bool类型

定义

代码语言:javascript
复制
b1 := true
fmt.Printf("b1类型:%T\n", b1)

输出结果:

代码语言:javascript
复制
b1类型:bool

默认值为false

代码语言:javascript
复制
var b2 bool
// 前面有2个% 后面也要传2次参数
fmt.Printf("b2类型为:%T 值为: %v\n", b2, b2)

输出结果:

代码语言:javascript
复制
b2类型为:bool 值为: false

总结

  1. Go语言中对类型有严格的要求,不同类型之间不能直接转换,哪怕int8/int16之间也不能转换。
  2. 声明变量同时赋值的方式,如果没有指定明确的数据类型,会默认使用范围大的类型,比如:int、float64、false
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员升级打怪之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • int
  • 进制转化
    • 定义八进制
      • 定义十六进制
        • 抛出问题
        • float
          • 定义float
            • 定义float32类型
              • 小技巧
                • 注意
                • bool类型
                  • 定义
                    • 默认值为false
                    • 总结
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档