Go语言类型

定义:

关键词var用于定义变量,和C不同,类型被放在变量类型的后面。

除了var 关键词外,也可以同通过简短模式进行关键词的赋值

常量:

常量表示在运行的时候恒定不可改变得值,常量值必须是编译期可确定的字符,字符串,数字或是布尔值,关键词为const

枚举:

Go没有明确意义上的enum的定义,不过可以借助iota标识符实现一组自增常量值来实现枚举类型

基本类型:

类型         长度       默认值           说明

bool         1            false

byte          1           0                     uint8

init,uint     4.8        0                     默认整数类型,依据目标平台,32或是64位

int8,uint8  1           0                      -128-127,0-255

int16,uint16  2       0                      -32,768-32,767 , 0-65,535

int32,uint32  4       0                       -21亿-21亿, 0-42亿

int64,uint64   8      0                       

float32           4      0.0

float64           8      0.0                        默认浮点型

complex64     8

complex128    16

rune                 4       0                        Unicode Code Point,int32

uintptr              4.8     0                        足以存储指针的uint

string                         ""                        默认为空字符串,而非NULL

array                                                     数组

struct                                                     结构体

function                      nil                      函数

interface                     nil                      接口

map                            nil                       字典  引用类型

slice                            nil                        切片,引用类型

channel                       nil                         通道,引用类型

引用类型:

所谓的引用类型,特指slice,map,channel 这三种预定义的类型,相比数字,数组等类型,引用类型拥有更为复杂的存储结构,除了分配内存外,还需要初始化一系列的属性,比如指针,长度,哈希分布,数据队列等。

内置函数new按照指定类型长度分配零值内存,返回指针,并不关心类型内部构造和初始化方式。而引用类型必须用make函数来创建,编辑器会将make转换为目标类型专用的创建函数,以确保完成全部内存分配和相关属性初始化。

当然通过 new函数也是为引用类型分配内存,但这是不完整的创建。以字典(map)为列,它只是分配了字典本身所需要的内存,并没有分配键值存储内存,所以没法工作使用。

类型转换:

除了常量,别名以及没有命名的类型外,Go强制要求使用显示的类型转换

如果转换类型是指针,单向通道或是没有返回值的函数类型,那么必须使用括号,避免造成语法分解错误

你可能感兴趣的:(Go语言类型)