美文网首页
GO基本数据类型

GO基本数据类型

作者: love_a_pig | 来源:发表于2019-03-26 15:56 被阅读0次
    go基本数据类型

            go语言中基本数据类型大体可以分为:整型、浮点型、布尔型、字符串。

            首先看整型,在go语言中整型的小分类比较多有(int、int8、int16、int32、int64)上面表示的是有符号的整型,对应的还有无符号的整型(uint、uint8、uint16、uint32、uint64)有符号和无符号的类型之间的区别是有符号的整型取值的区间有正有负,而无符号的类型取值的区间只有正数,例如uint8的取值区间为0-225,而225怎么算出来的呢,这里的int8表示的是一个字节也就是8bit,用二进制来表示就是00000000~11111111换算成十进制就是0~225那么这是无符号类型的取值范围,如果是有符号的int8的话就是-128~127,我们可以这么算在计算机中表示有符号的类型那么最高的位数将用来表示符号0代表正数1代表负数所以少了一位最高位,他们的取值范围换算成十进制就是-128~127,至于后面的16,32,64都是类似的并且取值范围在源码中都有记录。(整型当中有两个很特殊的存在一个是int32还有一个是uint8,在java语言中的chat字符型在go语言中用rune表示并且rune和int32是完全等同的rune就是int32的一个别名,取两个名字只是为了来区分字符和32位整型,uint8的还有一个别名就是我们很熟悉的byte,在所有方面都等同于uint8,按照惯例,用于区分字节值和8位无符号整数值。)

    1.1

            如果我们定义一个整型不给它指定决定的类型的话他默认就是int类型,在源码解释中int类型代表大小至少大于int32的类型但是和int32位不同的类型如图1.1,无符号uint和int差不多就在于符号的区别。

            然后就是浮点型,浮点型的话就没有整型那么多的分类了,在go中浮点型只有两种一直是float32还有就是float64,如果我们不指明类型的话类型的选择就和你的机器类型有关如果你是32位机就是float32,64位机的话就是float64,笔者用的就是64位机默认的话定义一个浮点数给它指定的类型就是float64如果你可以预知自己不需要那么大的空间来存储也可以显示的指定类型为float32可以节省一半的内存。

            接下来布尔类型,和传统的很多编程语言一样go语言中布尔类型只有两个值ture或false用法大同小异,没有什么可以记录的。

            最后的话就是我们使用频率最高的类型之一的字符串类型了,在go语言中的字符串类型和java当中基本没有区别。

            在最后的最后补充一个小笔记就是上面提到的计算机中表示一个负数,是把最高位用来表示正负,以8位2进制为例1(00000001)推理得出-1的话就是(100000001)但是计算的话就会出问题-1+1在十进制中等于0但是按照这个规则用2进制的数进行计算相加的话就是-2,所以就有了补码-1这样的有符号数不用10000001来表示而是用它的补码来表示(补码的求法:向我们上面按照之前的规则最高位代表符号表示-1的二进制数值10000001这是-1的原码,最高位表示符号的不动后面所有位上面的数取反然后加1就是11111111就是-1的补码)然后用00000001+11111111=1000000000由于是8位的数去掉最高位就是00000000等于0

    相关文章

      网友评论

          本文标题:GO基本数据类型

          本文链接:https://www.haomeiwen.com/subject/cmvgvqtx.html