Go语言从入门到实战-数据类型

数据类型

基本数据类型

// 整型
int int8 int16 int32 int64

// 无符号整型
uint uint8 uint16 uint32 uint64 uintptr

// 浮点类型
float32 float64 

// 复数
complex64 complex128 

// 布尔类型
bool 

// 字符
string 

// 字节,uint8的别名
byte 

// int32 
//表示一个Unicode 码点

rune 

零值

当一个变量或者新值被创建时, 如果没有为其明确指定初始值,go语言会自动初始化其值为此类型对应的零值, 各类型零值如下:

bool    :false

integer :0

float   :0.0

string:""

pointer, function, interface, slice, channel, map:nil

 

对于复合类型, go语言会自动递归地将每一个元素初始化为其类型对应的零值。比如:数组, 结构体 。

整型占用字节问题

int,uint整型:和机器平台有关,最小32位,占用4字节,64位,占用8字节。

类型转换

不支持不同类型之间隐式转换,即便是类型别名和同类型之间也不行。

数值范围

类型 长度(字节) 数值范围
int8 1 -128~127 (-2^(8-1) ~ 2^7-1)
uint8 1 0~255 (0 ~ 2^8-1)
int16 2 -32768~32767
uint16 2 0~65535
int32 4 -2^31 ~ 2^31-1 (-2147483648~2147483647)
uint32 4 0~2^32-1 (0~4294967295)
int64 8 -2^63 ~2^63-1
uint64 8 0~2^63
int
uint
uintptr

int占用字节数测试

//
//机器位数
cpu := runtime.GOARCH
//int占用位数
int_size := strconv.IntSize

string类型

string 是值类型。默认初始化值是空字符串,不是nil(string类型零值为空字符串)

func TestString(t *testing.T) {

    var s string
    t.Logf("%T %q", s, s) //string ""
}

本人Go语言接触时间不长,文章内容难免有纰漏,如有错误还请指正,欢迎交流学习。

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 2,217评论 1 10
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 11,833评论 0 39
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 1,951评论 0 8
  • 快放假了,工作已到了收尾阶段。 雪没有辜负天气预告,又来造访,虽不厚,依然给了人们蜗居的理由,似乎还增添了点年意—...
    眼里的湖阅读 324评论 6 15
  • 面对打心底里看不起我,不尊重我的人,无论如何也别指望我掏心掏肺的和你做朋友。我的原则就是,朋友之间平等是前提,我是...
    URUS阅读 27评论 0 0
  • 前言 最近公司app上需要做一个购物车,我就在寻思要不要做一点“特效”😏。于是我就查了百度,了解了如何用贝塞尔抛物...
    猿ape阅读 963评论 0 1
  • 说说我自己的经历吧,7月份和他分的手,就是因为太自卑,太害怕失去他就不断的对他好,然后他也越来越烦躁,感觉到很累,...
    德州苏菲亚阅读 36评论 0 0
  • 放任自己随波逐流没人责怪您,但是跳出来嘲讽那些努力上进又严格自律的人,那就真的和跳梁小丑没什么区别了。 萧伯纳说过...
    L_1d4e阅读 427评论 0 0