Go语言学习笔记2:基本数据类型
1、变量声明:
var 变量名字 类型 = 表达式 ,自动初始化为零值,如果提供初始化值,可省略变量类型,由编译器自动推断。
var test int = 10
变量只是给程序可以操作的存储区域的名字,go中每个变量都有一个特定的类型,它决定了变量的内存大小和布局,可以存储在存储器内的值的范围,以及该变量的一组操作。
2、类型说明:
布尔类型 true false
数字类型 整数类型和浮点类型
字符串类型
派生类型:指针,数组,结构,联合,函数,切片,接口等
3、类型声明:
静态类型声明和动态类型声明,混合变量声明
静态声明为编译器提供了保证,即一个给定类型和名称的变量,以便编译器继续进一步编译。
动态声明编译器会根据传递给它的值来解释变量的类型。(类型推断)
混合变量声明:不同类型的变量可以在一次声明中使用类型推断。
省略var,使用赋值运算符 := 完成变量的声明。
4、基础类型:整型
与体系结构无关的整数类型:
int8 有符号 8位
int16 有符号
int32 有符号
int64 有符号
uint8 无符号
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
)
类型表:
12、引用类型:
slice,map,channel是引用类型,它们有复杂内部结构,除了申请内存外,还需要初始化相关属性。
13、类型转换:
不支持隐式类型转换,即便是从窄向宽转换也不行。