一开始直接上图,直观的看下基本数据类型

整型

表格表示

类型 有无符号 占用的存储空间 数值范围 描述
int8 1字节 -128 ~ 127
int16 2字节 -32768 ~ 32767
int32 4字节 -2147483648 ~ 2147483647
int64 8字节 -9223372036854775808 ~ 9223372036854775807
int 32位系统4字节 64位系统8字节 32位系统看int32 64位系统看int64
byte 1字节,与int8等价 0 ~ 255 byte也用来存储字符
rune 4字节 同int32 相当于 Unicode下的 int32
uint8 1字节 0 ~ 255
uint16 2字节 0 ~ 65535
uint32 4字节 0 ~ 4294967295

用"math"包中的常量打印出整型的范围

官方文档的截图

示例代码

package mainimport (    "fmt"    "math")func main(){    fmt.Println("int8 min = ", math.MinInt8, " int8 max = ", math.MaxInt8)    fmt.Println("int16 min = ", math.MinInt16, " int16 max = ", math.MaxInt16)    fmt.Println("int32 min = ", math.MinInt32, " int32 max = ", math.MaxInt32)    fmt.Println("int64 min = ", math.MinInt64, " int64 max = ", math.MaxInt64)    fmt.Println("Uint8 max = ", math.MaxUint8)    fmt.Println("Uint16 max = ", math.MaxUint16)    fmt.Println("Uint32 max = ", math.MaxUint32)    //fmt.Println(" Uint64 max = ", math.MaxUint64)    }

在官方文档中,Uint64是有的,但是在我本机中,我打印就溢出,所以这个还需要你们在这里的电脑中测试一下,是否能打印处理来


用"unsafe"包打印整型的存储大小

官方文档的截图

示例代码

package mainimport (    "fmt"    "unsafe")func main(){    var sizeofInt8 int8    var sizeofInt16 int16    var sizeofInt32 int32    var sizeofInt64 int64    fmt.Println("int8 所占的字节数 = ", unsafe.Sizeof(sizeofInt8))    fmt.Println("int16 所占的字节数 = ", unsafe.Sizeof(sizeofInt16))    fmt.Println("int32 所占的字节数 = ", unsafe.Sizeof(sizeofInt32))    fmt.Println("int64 所占的字节数 = ", unsafe.Sizeof(sizeofInt64))    var sizeofint int    fmt.Println("int 所占的字节数 = ", unsafe.Sizeof(sizeofint))    var sizeofUint8 uint8    var sizeofUint16 uint16    var sizeofUint32 uint32    var sizeofUint64 uint64    fmt.Println("Uint8 所占的字节数 = ", unsafe.Sizeof(sizeofUint8))    fmt.Println("Uint16 所占的字节数 = ", unsafe.Sizeof(sizeofUint16))    fmt.Println("Uint32 所占的字节数 = ", unsafe.Sizeof(sizeofUint32))    fmt.Println("Uint64 所占的字节数 = ", unsafe.Sizeof(sizeofUint64))    }

在这里,因为我用的是64位的笔记本,所以int 打印的是8个字节


用"fmt"包的 Printf 格式化输出整型的默认值

官方文档的截图

示例代码

package mainimport (    "fmt")func main(){    var defaultValueInt8 int8    var defaultValueInt16 int16    var defaultValueInt32 int32    var defaultValueInt64 int64    fmt.Printf("int8 的默认值是 = %v\n", defaultValueInt8)    fmt.Printf("int16 的默认值是 = %v\n", defaultValueInt16)    fmt.Printf("int32 的默认值是 = %v\n", defaultValueInt32)    fmt.Printf("int64 的默认值是 = %v\n",defaultValueInt64)    var defaultValueint int    fmt.Printf("int 的默认值是 = %v\n", defaultValueint)    var defaultValueUint8 uint8    var defaultValueUint16 uint16    var defaultValueUint32 uint32    var defaultValueUint64 uint64    fmt.Printf("Uint8 的默认值是 = %v\n", defaultValueUint8)    fmt.Printf("Uint16 的默认值是 = %v\n", defaultValueUint16)    fmt.Printf("Uint32 的默认值是 = %v\n", defaultValueUint32)    fmt.Printf("Uint64 的默认值是 = %v\n", defaultValueUint64)    }


浮点型

类型 占用的存储空间 取值范围 描述
float32 4字节 单精度
float64 8字节 双精度
这里说的精度,表示的是小数点后,能显示的位数精确到哪几位

官方文档的截图

这是打印 float 范围的常量

示例代码

package mainimport (    "fmt"    "math"    "unsafe")func main(){    //打印 float 的取值范围    fmt.Println("float32的最小值 = ",math.SmallestNonzeroFloat32," 最大值为 = ", math.MaxFloat32)    fmt.Println("float64的最小值 = ",math.SmallestNonzeroFloat64," 最大值为 = ", math.MaxFloat64)    //打印 float 所占存储空间的大小    var sizeoffloat32 float32    var sizeoffloat64 float64    fmt.Println("float32所占的存储空间为:",unsafe.Sizeof(sizeoffloat32))    fmt.Println("float64所占的存储空间为:",unsafe.Sizeof(sizeoffloat64))    //打印 float 的默认值    fmt.Printf("float32的默认值为:%v\n", sizeoffloat32)    fmt.Printf("float64的默认值为:%v\n", sizeoffloat64)}

我把取值范围,所占存储空间大小,默认值都写在同一个文件中,你可以把代码复制进编译器运行一遍,至于里面用到的一些包和方法,上面有截图,你可以去上面看一下

上面打印出来的取值范围用的是科学计数法[1]

Go浮点型赋值的时候

0.123 是可以等价为 .123,只有小数点前为0可以使用

字符型

字符型跟别的编程语言不一样,这里的字符不是用的char来存储,用的是byte来存储,而且存储的范围只有 -128 ~ 127,存储的是ASCII表[2]所展示的内容

示例代码

package mainimport (    "fmt"    "unsafe")func main(){    var sizeofByte byte    //打印出byte的存储大小    fmt.Println("byte所占的存储空间为:", unsafe.Sizeof(sizeofByte))    //打印出byte的默认值    fmt.Printf("byte的默认值为:%q", sizeofByte)}

这里的 %q,是可以把原本基本类型的格式也打印出来(个人理解)

如果我们各种情况打印字符的话,那会是什么情形?

package mainimport (    "fmt")func main(){    var testByte byte = 'a'    //打印 testByte的值,不用格式化输出    fmt.Println("testByte不是格式化输出的值为:", testByte)    //打印 testByte的值,用格式化输出    fmt.Printf("testByte格式化输出的值为:%c\n", testByte)    var testByte2 byte     //用 %q格式化打印 testByte2的值    fmt.Printf("testByte2的值为:%q\n", testByte2)    //用 %c格式化打印 testByte2的值    fmt.Printf("testByte2的值为:%c\n", testByte2)}

第一个输出,是输出字符在 ASCII中十进制的表示,a的十进制是97

第二个用格式化输出,用的%c,是输出了相应的Unicode代码表示的字符

第三个和第四个输出的是byte的默认值,但是两者有不同的区别,用%q有把 '' 也给输出了,但是%c没有

思考题:因为 byte只能存储一个字节,而汉字一般占用的是3-4个字节,那么该用什么来存储?

package mainimport (    "fmt")func main(){    var testA int = '帅'    fmt.Println("testA的值为:", testA)    fmt.Printf("testA用格式化输出:%c", testA)}

答案是用整型来接收,byte实质上等于int8,而且存储在计算机时,计算机不是存储的字符,而是字符所代表的ASCII表的十进制的数字,那用整型就可以存储更大的汉字了,因为最后在计算机也是存储的是数字

布尔类型

布尔类型也是叫 bool类型,它只有两个值,true或者是false

bool只占存储空间的1个字节

示例代码

package mainimport (    "fmt"    "unsafe")func main(){    var testbool bool     fmt.Println("testbool的默认值是:", testbool)    fmt.Println("testbool所占存储空间的大小是:", unsafe.Sizeof(testbool))}

补充:bool常用于循环、条件语句中

字符串

示例代码

在上面的字符那里,我们每次只能写一个字符,而字符串可以让你,一次性多写很多个字符

package mainimport (    "fmt"    "unsafe")func main(){    var testString string      fmt.Println("testString的默认值是:", testString)    fmt.Println("testString所占存储空间的大小是:", unsafe.Sizeof(testString))    fmt.Printf("testString的默认值是,用格式化输出:%s\n", testString)    fmt.Printf("testString的默认值是,用格式化输出:%q", testString)}

在上面,string 默认的大小是16个字节,而我们格式化输出 %s,是说直接输出这个字符串内容,但是由于我们没有赋值,它默认是空,所以输出空白,但我们用了%q去输出内容,输出了双引号,输出了它的格式""

有个需要注意的点:字符串一经创建,就不能修改

字符串拼接

package mainimport (    "fmt")func main(){    var hello string = "hello"    var world string = " world"    var helloworld string = hello + world    fmt.Println(helloworld)}

输出的是:hello world

有个注意点:如果有多个字符串拼接,如果太长了,你要换行,需要把 + 号,放在前一个字符串的后面,而不能连 + 号也换行了,不然会报错解释:因为Go语言中,执行代码的时候,在你不添加 ;分号的时候,换行就等于是新的语句了,而上面的代码,Go会隐式的给你加上 ;分号

References

[1] 科学计数法: https://baike.baidu.com/item/%E7%A7%91%E5%AD%A6%E8%AE%B0%E6%95%B0%E6%B3%95/1612882?fromtitle=%E7%A7%91%E5%AD%A6%E8%AE%A1%E6%95%B0%E6%B3%95&fromid=756685&fr=aladdin[2] ASCII表: https://baike.baidu.com/item/ASCII/309296?fromtitle=ascii%E7%A0%81&fromid=99077&fr=aladdin

go uint64 转 字符_Go的基本数据类型入门看这一篇就差不多了相关推荐

  1. python中的数据类型有哪些是可阅读_Python list data type(list)[学习Python的必要基础知识][阅读本文],列表,数据类型,必备,看此,一篇,就够,了...

    您的"关注"和"点赞",是信任,是认可,是支持,是动力- 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 1 Python ...

  2. Java基础概念干货(字符、标识符、数据类型... ...)

    Java基础概念之字符.标识符.数据类型 一.字节 1.位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数. 2.字节(byte):是计算机中数据处理的基本单位,习惯上用 ...

  3. java数据类型入门程序_「JAVA零基础入门系列」Day3 Java基本数据类型

    前两篇已经将开发环境搭建完成,如果你已经按之前的教程按部就班的完成了部署,那么世界上最优秀的编程语言之一和世界上最优秀的IDE之一已经出现在你的电脑上(此处应有掌声),如果你还没入门,或者正在台阶上踱 ...

  4. c语言入门数据类型详解,C语言的基本数据类型入门教程

    数据类型包括各种数据类型了我们今天给各位介绍的是我们常用的基本数据类型了,下面一起来看这篇C语言的基本数据类型入门教程吧,具体的如下文介绍. 1.声明头文件,相当于java的导包. //只有函数的声明 ...

  5. python可以处理任何字符编码文本_python数据类型、字符编码、文件处理

    介绍: 1.什么是数据? 例:x=10,10是我们要存储的数据 2.为何数据要分不同的类型? 数据是用来表示状态的,不同的状态用不同的类型的数据去表示 1.数据类型 1.数字(整形,长整形,浮点型,复 ...

  6. C语言显示字符型和整型数据类型的表示范围

    #include <stdio.h> #include <limits.h>int main(void) {puts("该环境下各字符型.整型数值的范围") ...

  7. week1:字符格式化输出,数据类型,for循环,break,continue,标志位

    一.字符格式化输出 占位符 %s s = string %d  d = digit 整数 %f  f = float 浮点数,约等于小数 Ctrl+问好  整段注释 在命令窗口输入  exit(),退 ...

  8. 前续和后续字符 C语言,基于数据类型完善的C语言课程改革研究

    徐晓 [摘 要]针对目前二本计算机专业学生普遍感觉C语言难学.效果不佳的问题,本文从数据类型角度提出一个解决方案,使学生学习C语言既觉得容易又觉得有成就感,并为学习后续语言打下扎實的编程基础.笔者通过 ...

  9. mysql使用max函数+将类似123的字符型数据转换成数据类型

    一 获取每天用户数最多的时段 从最多一词可以看出,我们如要去除用户数最多的时段,需要使用max()函数了, 数据表result中个字段为:stat_day,usernum,stat_hour,部分数据 ...

最新文章

  1. Item 36. Class-Specific Memory Management
  2. 图像检索:几类基于内容的图像分类技术
  3. python好多模块和c相识_快速实现python c扩展模块
  4. 模块化数据中心还需精工细作
  5. 给微软的日志框架写一个基于委托的日志提供者
  6. IntelliJ IDEA 配置chrome插件调试js代码
  7. centos树莓派安装mysql_树莓派3B+安装CentOS7
  8. Alexey 大神接棒,YOLOv4 重磅来袭!快来一睹论文真容吧!| 原力计划
  9. python 读取特定字符之间数据_python 搜索每一行特定字符串之间的数据,求高人帮忙写人程序...
  10. “网页上有错误”的解决方法
  11. 水很深的深度学习(四)——卷积神经网络CNN
  12. js 原型链的介绍
  13. 红帽新 Logo 为何要移除黑影人?
  14. 【紫书第六章】二叉树、欧拉图基本概念与性质
  15. 为什么你需要软件运维服务
  16. struts2通配符使用
  17. KeilC51基本关键字
  18. 利用Python进行股票交易分析(一):量化交易策略——买点与卖点的量化
  19. SQL Server 2008用'sa'登录失败(错误18456)
  20. 转:大数据的大价值:大数据五大成功案例深度解析

热门文章

  1. C语言中编译、生成、调试、运行的区别
  2. 张小龙公布微信小程序进展 可直接从桌面进入
  3. Linux学习第二步(Java环境安装)
  4. 将RHEL7/centos7系统网卡名称eno16777736改为eth0
  5. LVM---基本创建和使用
  6. maven配置文件 pom.xml
  7. gitblit.cmd运行自动关闭
  8. Spring中BeanPostProcessor
  9. .Net解析html文档类库HtmlAgilityPack完整使用说明
  10. shell中取字符串子串的几种方式