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

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

int


定义int类型


var int1 = 1
fmt.Printf("int1类型:%T\n", int1)


输出结果:


int1类型:int


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


进制转化


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("-----")


输出结果:


数值为:101
把十进制转成二级制:1100101
把十进制转成八进制:145
把十进制转成十六进制:65


定义八进制


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


i2 := 077
fmt.Printf("i2十进制:%d\n", i2)
fmt.Printf("i2八进制:%o\n", i2)
fmt.Printf("i2类型%T\n",i2)


输出结果


i2十进制:63
i2八进制:77
i2类型int


定义十六进制


从0到f,逢十六进一


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


输出结果


i3十进制:19088743
i3十六进制:1234567
i3十进制数据类型:int


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


抛出问题


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

其实非常简单:


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)


输出结果:


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


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


输出结果:


f1类型:float64


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

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


定义float32类型


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


f2 := float32(1.4321)
fmt.Printf("%T\n", f2)


输出结果:


f2类型:float32


小技巧


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


var maxFloat = math.MaxFloat32;
println(maxFloat)


输出结果:


+3.402823e+038


注意


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


微信图片_20221112124958.jpg


bool类型


定义


b1 := true
fmt.Printf("b1类型:%T\n", b1)


输出结果:


b1类型:bool


默认值为false


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


输出结果:


b2类型为:bool 值为: false


总结


  1. Go语言中对类型有严格的要求,不同类型之间不能直接转换,哪怕int8/int16之间也不能转换。
  2. 声明变量同时赋值的方式,如果没有指定明确的数据类型,会默认使用范围大的类型,比如:int、float64、false


公众号:程序员升级打怪之旅

微信号:wangzhongyang1993

相关文章
|
3月前
|
消息中间件 人工智能 供应链
go-zero 微服务实战系列(二、服务拆分)
go-zero 微服务实战系列(二、服务拆分)
|
2月前
|
Shell Go API
Go语言grequests库并发请求的实战案例
Go语言grequests库并发请求的实战案例
|
23天前
|
存储 C语言
使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小
【10月更文挑战第13天】使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小。
64 1
|
1月前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
20 3
|
29天前
|
TensorFlow 算法框架/工具
Tensorflow error(二):x and y must have the same dtype, got tf.float32 != tf.int32
本文讨论了TensorFlow中的一个常见错误,即在计算过程中,变量的数据类型(dtype)不一致导致的错误,并通过使用`tf.cast`函数来解决这个问题。
20 0
|
2月前
|
安全 大数据 Go
深入探索Go语言并发编程:Goroutines与Channels的实战应用
在当今高性能、高并发的应用需求下,Go语言以其独特的并发模型——Goroutines和Channels,成为了众多开发者眼中的璀璨明星。本文不仅阐述了Goroutines作为轻量级线程的优势,还深入剖析了Channels作为Goroutines间通信的桥梁,如何优雅地解决并发编程中的复杂问题。通过实战案例,我们将展示如何利用这些特性构建高效、可扩展的并发系统,同时探讨并发编程中常见的陷阱与最佳实践,为读者打开Go语言并发编程的广阔视野。
|
2月前
|
存储 编译器 Go
Go to Learn Go之基本数据类型
Go to Learn Go之基本数据类型
27 0
|
3月前
|
消息中间件 缓存 Kafka
go-zero微服务实战系列(八、如何处理每秒上万次的下单请求)
go-zero微服务实战系列(八、如何处理每秒上万次的下单请求)
|
3月前
|
缓存 NoSQL Redis
go-zero微服务实战系列(七、请求量这么高该如何优化)
go-zero微服务实战系列(七、请求量这么高该如何优化)
|
3月前
|
缓存 NoSQL 数据库
go-zero微服务实战系列(五、缓存代码怎么写)
go-zero微服务实战系列(五、缓存代码怎么写)
下一篇
无影云桌面