Go语言学习笔记2:基本数据类型

1、变量声明:

var 变量名字 类型 = 表达式 ,自动初始化为零值,如果提供初始化值,可省略变量类型,由编译器自动推断。

var test int = 10

变量只是给程序可以操作的存储区域的名字,go中每个变量都有一个特定的类型,它决定了变量的内存大小和布局,可以存储在存储器内的值的范围,以及该变量的一组操作。

2、类型说明:

布尔类型  true  false

数字类型  整数类型和浮点类型

字符串类型  

派生类型:指针,数组,结构,联合,函数,切片,接口等

3、类型声明:

静态类型声明和动态类型声明,混合变量声明

静态声明为编译器提供了保证,即一个给定类型和名称的变量,以便编译器继续进一步编译。

动态声明编译器会根据传递给它的值来解释变量的类型。(类型推断)

混合变量声明:不同类型的变量可以在一次声明中使用类型推断。

省略var,使用赋值运算符 := 完成变量的声明。

4、基础类型:整型

与体系结构无关的整数类型:

int8   有符号  8位

int16   有符号

int32   有符号

int64   有符号

uint8    无符号

uint16   无符号

uint32    无符号

uint64    无符号

与体系结构相关的整数类型:

int   有符号   cpu位数

uint   无符号  cpu位数

5、基础类型:浮点型

与体系结构无关的类型

float32   32位浮点数

float64    64位浮点数

complex64    32位实数和虚数

complex128     64位实数和虚数

其他数字类型:

byte 类似 uint18

rune 类似 int32

uintptr 无符号整型,用于存放一个指针

6、字符串类型

string是只读字节,字符串是切片,字符串文字是不可变的。

默认初始值是空字符串。

使用下标访问某个字节,如s[i]。


7、左值与右值:

左值:引用存储器位置的表达式称为左值表达式,左值可能出现在作业的左侧或右侧。

右值:存储在存储器中某个地址的数据值。

变量是左值,可以出现在赋值的左侧或右侧。但是常量数字文字是右值,不可以出现在赋值的左侧。

8、值类型与引用类型:

值类型:通过变量名直接指向存在内存中的值,赋值的过程实际是进行了一次值拷贝。

引用类型:类似指针。值被改用,所有引用类型都被改变。

9、所有的类型转换必须显式转换。不存在隐式转换。

10、常量类型:

常量值可以是len,cap等编译器可确定结果的函数返回值。

11、iota定义常量组中从0开始按行计数的自增枚举值

const(

    Sunday = iota   //0

    Monday    //1

    Tuesday    //2

    Wednesday    //3

    Thursday    //4

    Friday    //5

    Saturday    //6

)

类型表:

Go语言学习笔记2:基本数据类型

12、引用类型:

slice,map,channel是引用类型,它们有复杂内部结构,除了申请内存外,还需要初始化相关属性。

13、类型转换:

不支持隐式类型转换,即便是从窄向宽转换也不行。