本篇是go语言的基础篇,主要是帮助大家梳理一下go语言的基本类型,注意本篇有参考go圣经,如果你有完整学习的需求可以看一下,另外,go语言的基本类型比较简单,介绍过程就比较粗暴。
基本类型整形这个不是韩国的“绝学”——整形术,整形在编程中可以表示一定范围内的整数
(资料图)
注意:int或uint的占用空间取决于你的操作系统是32位或64位
对于整形我们要关注的是数据类型的长度,数据范围
代码如下:
package mainimport ("fmt""math""unsafe")func main() {fmt.Printf("int8 length: %v range: %v ~ %v\n", unsafe.Sizeof(int8(1)), math.MinInt8, math.MaxInt8)fmt.Printf("int16 length: %v range: %v ~ %v\n", unsafe.Sizeof(int16(1)), math.MinInt16, math.MaxInt16)fmt.Printf("int32 length: %v range: %v ~ %v\n", unsafe.Sizeof(int32(1)), math.MinInt32, math.MaxInt32)fmt.Printf("int64 length: %v range: %v ~ %v\n", unsafe.Sizeof(int64(1)), math.MinInt64, math.MaxInt64)fmt.Printf("int length: %v\n", unsafe.Sizeof(int(1)))fmt.Printf("uint8 length: %v range: 0 ~ %v\n", unsafe.Sizeof(uint8(1)), math.MaxUint8)fmt.Printf("uint16 length: %v range: 0 ~ %v\n", unsafe.Sizeof(uint16(1)), math.MaxUint16)fmt.Printf("uint32 length: %v range: 0 ~ %v\n", unsafe.Sizeof(uint32(1)), math.MaxUint32)fmt.Printf("uint64 length: %v range: 0 ~ %v\n", unsafe.Sizeof(uint64(1)), uint64(math.MaxUint64))fmt.Printf("uint length: %v\n", unsafe.Sizeof(uint(1)))}
输出:
int8 length: 1 range: -128 ~ 127int16 length: 2 range: -32768 ~ 32767int32 length: 4 range: -2147483648 ~ 2147483647int64 length: 8 range: -9223372036854775808 ~ 9223372036854775807int length: 8uint8 length: 1 range: 0 ~ 255uint16 length: 2 range: 0 ~ 65535uint32 length: 4 range: 0 ~ 4294967295uint64 length: 8 range: 0 ~ 18446744073709551615uint length: 8
有符号整形这种整形就是可以表示负整数,0和正整数
数据类型 | 占用空间(bit) | 长度(字节) | 取值范围 |
---|---|---|---|
int8 | 8 | 1 | -2^7 ~ 2^7-1(-128~127) |
int16 | 16 | 2 | -2^15 ~ 2^15-1(-32768 ~ 32767) |
int32 | 32 | 4 | -2^32 ~ 2^32-1(-2147483648 ~ 2147483647) |
int64 | 64 | 8 | -2^64 ~ 2^64-1(-9223372036854775808 ~ 9223372036854775807) |
int | 32或64 | 4或8 | 同int32或int64 |
这种整形就是可以表示非负整数
数据类型 | 占用空间(bit) | 长度(字节) | 取值范围 |
---|---|---|---|
uint8 | 8 | 1 | 0 ~ 2^8-1(0 ~ 255) |
uint16 | 16 | 2 | 0 ~ 2^16-1(0 ~ 65535) |
uint32 | 32 | 4 | 0 ~ 2^32-1(0 ~ 4294967295) |
uint64 | 64 | 8 | 0 ~ 2^64-1(0 ~ 18446744073709551615) |
uint | 32或64 | 4或8 | 同uint32或uint64 |
浮点型在编程中可以表示一定范围内的实数
注意:对于浮点型我们要关注的是数据类型的长度,数据范围,但更要关注精度。
代码如下:
package mainimport ("fmt""math""unsafe")func main() {fmt.Printf("float32 length: %v range: %v ~ %v\n", unsafe.Sizeof(float32(1)), -math.MaxFloat32, math.MaxFloat32)fmt.Printf("float64 length: %v range: %v ~ %v\n", unsafe.Sizeof(float64(1)), -math.MaxFloat64, math.MaxFloat64)fmt.Printf("after transfer float32 %v\n", float32(1.328))fmt.Printf("after transfer float64 %v\n", float64(float32(1.328)))}
输出:
float32 length: 4 range: -3.4028234663852886e+38 ~ 3.4028234663852886e+38float64 length: 8 range: -1.7976931348623157e+308 ~ 1.7976931348623157e+308before transfer float32: 1.328after transfer float64: 1.3279999494552612
你可以看到1.328在float32强制转化为float64反常地失去了一些精度,当然这就是为啥项目和数据库只有高精度实数的原因,你可以想象在这种情况时使用乘法后可怕的结果。
至于这个产生的原因时浮点32型和浮点64型在计算机上表示方式不同,这部分内容你可以查看《计算机程序的构造和解释》。
列表如下:
数据类型 | 占用空间(bit) | 长度(字节) | 取值范围 |
---|---|---|---|
float32 | 32 | 4 | -3.4028234663852886e+38 ~ 3.4028234663852886e+38 |
float64 | 64 | 8 | -1.7976931348623157e+308 ~ 1.7976931348623157e+308 |
最简单的类型
注意:分支语句中的if后面的表达式的结果值是true或false
代码如下:
package mainimport ("fmt""unsafe")func main() {fmt.Printf("bool length: %v %v/%v", unsafe.Sizeof(true), 0 == 0, 0 != 0)}
输出:
bool length: 1 true/false
列表如下:
数据类型 | 占用空间(bit) | 长度(字节) | 取值范围 |
---|---|---|---|
bool | 1 | 1 | true/false |
注意:byte是包含ascii码,即uint8 ,rune是可以包含utf-8的,即uint32
代码如下:
package mainimport ("fmt""unsafe")func main() {fmt.Printf("byte length: %v %v %c\n", unsafe.Sizeof(byte("a")),byte("a"),byte("a"))fmt.Printf("rune length: %v %v %c\n", unsafe.Sizeof(rune("中")),rune("中"),rune("中"))}
输出:
byte length: 1 97 arune length: 4 20013 中
列表如下:
数据类型 | 占用空间(bit) | 长度(字节) | 取值范围 |
---|---|---|---|
byte | 8 | 1 | 0 ~ 2^8-1(0 ~ 255) |
rune | 32 | 4 | 0 ~ 2^32-1(0 ~ 4294967295) |
很好,你已经阅读完了go的基本类型!看是不是简单?学习go语言其实比较简单,现在你知道了每个类型都有自己的长度,取值范围和注意点。另外相关代码房子在go语言学习的go-base/2中,你需要去获取它练习一下。等我们学习完go语言的控制结构后就能看到学习go的基本类型的价值,在实际的编程中,事实上选择合适的类型是很重要的。
下一篇预告go语言的控制结构
标签:
[TOC] 本篇前瞻本篇是go语言的基础篇,主要是帮助大家梳理一下go语言的
公司年会一般都用什么礼品公司年会礼品选什么好年关将至,各家公司的年
博主@吉姆吃饱了发布的图片显示,比亚迪汉车型三周年OTA重磅来袭。新固
华业香料(SZ300886,收盘价:22 85元)6月29日晚间发布公告称,安徽华
[新闻页-台海网]据福建日报8月19日报道,记者从福建省及厦门市两级市场
23岁中国女留学生王某被骗柬埔寨木牌后遭绑架,绑匪丧心病狂切掉其
洪水过后,京津冀及东北地区灾后重建的情况现在如何,进展到了哪一步?
三湘都市报8月18日讯(全媒体记者杨斯涵黄京)电梯作为配套城镇化发展
大家好,小问来为大家解答以上问题。数的分类结构图六年级下册,数的分
25岁小伙钱塘江里抢潮头鱼失联近6小时,死里逃生的他说:再也不敢了,江
海天瑞声:海天瑞声关于2023年度向特定对象发行A股股票申请收到上海证券
针针击破!本款Ninebot九号联名版电动自行车现正火热促销,特价至2899
8月16日,宁德时代发布全球首款采用磷酸铁锂材料并可实现大规模量产的4
中国队太牛了!连夺2金,巴黎奥运会入场券到手,老中青完美搭配
8月10日,申银万国期货有限公司下属风险管理子公司申银万国智富投资有
光明网讯(记者丛芳瑶)盛夏时节,稻浪起伏,边欣赏青色稻田,边吃一顿
文 羊城晚报全媒体记者杭莹孙绮曼图 羊城晚报全媒体记者冼颖樱海报设计
中共中央政治局常务委员会召开会议研究部署防汛抗洪救灾和灾后恢复重建
2023年8月17日保利联合融资净买入100 32万元,融资余额1 07亿元
小米、优必选等厂商已经在探索大模型与机器人的结合。多款人形机器人可
X 关闭
X 关闭