#### Go 变量及基本数据类型(一)
今天主要学习一下Go 中的变量及基本数据类型: 如何申明,使用变量,以及基本数据类型的介绍和使用细节;
##### 变量的介绍
1. 变量相当于内存中一个数据存储空间的表示, 也可以把变量看做是一个房间的门牌号, 通过门牌号可以找到房间, 同理通过变量名可以访问到变量的值;
##### 变量的使用步骤
1. 声明变量
2. 非变量赋值
3. 使用变量
案例:
package main import "fmt" func main(){ // 定义变量, 也叫声明变量 var i int // 给变量赋值 i = 10 // 使用变量 fmt.Println("i=",i) }
##### 变量使用注意事项
1. 变量表示内存中的一个存储区域
2. 该区域有自己的名称(变量名)和类型(数据类型)
示意图:
3. Go 变量使用的三种方式
3.1 指定变量类型, ***声明后若不赋值,使用默认值***;
package main func main(){ // 声明后若不赋值, 使用默认值 // int 类型的默认值是0 var i int fmt.Println("i=",i) }
3.2 根据值自动判断变量的类型(称为类型推导)
// 根据值自动判断变量的类型 var i = 11 fmt.Println("i=",i)
3.3 省略var , := 左侧的变量不应该是声明过的,而且此种方式,只能使用于函数内;
func test(){ // 省略var , := 左侧的变量不能是已经声明过的,否则编译失败 name := "Tom" fmt.Println("name=",name) }
3.4 多变量声明
package main import "fmt" func main(){ // 声明多个变量 var a1,a2,a3 int // 为多个变量赋值 a1,a2,a3 = 1,2,3 fmt.Println(a1,a2,a3) // 声明多个变量并赋值 var a4,a5,a6 = 4,"5",6.6 fmt.Println(a4,a5,a6) // 类型推导方式 a7,a8,a9 := 5,"6",7.7 fmt.Println(a7,a8,a9) }
3.5 全局变量的定义(在函数外部定义的变量为全局变量)***全局变量不可以使用:= 方式声明***
// 定义全局变量 package main import "fmt" var n1 = 1 var n2 = 2 // 也可以一次性声明 var ( n3 = 3 n4 = 4 ) func main(){ fmt.Println(n1,n2,n3,n4) }
3.6 变量在同一个作用域(在同一个函数或者同一个代码块)不能重名
func test(){ var i = 10 i := 11 // 错误, 同一个作用域不能重名) }
3.7 变量如何没有赋值,编译器会使用默认值, int 默认值0, string 默认值为"", 小数类型默认0, bool 类型为false;
##### 程序中 "+" 号的使用
1. 当左右两边都是数值类型时, 做加法运算;
2. 当左右两边都是字符串时, 做字符串拼接;
package main import "fmt" func main(){ var a1 = 1 var a2 = 2 var s1 = "hello " var s2 = "world" fmt.Println(a1+a2) // 加法运算 fmt.Println(s1+s2) // 拼接 }
##### 基本数据类型的介绍
每一个数据都定义了明确的数据类型, 在内存中分配不同大小的内存空间
1. 基本数据类型
1.1 整数类型(int,int8,int16,int32,int64,uint,uint8,uint16,uint32,uint64)
1.2 浮点类型(float32,float64)
1.3 字符型(使用byte 保存单个字母字符)
1.4 布尔型(bool)
1.5 字符串(string)
2. 复杂数据类型
2.1 指针(Pointer)
2.2 数组(array)
2.3 结构体(struct)
2.4 管道(channel)
2.5 函数(func)
2.6 切片(slice)
2.7 接口(interface)
2.8 map