系列文章
本章主题
简述
每种语言有每种语言的特点,变量作为Go语言的重要组成部分,一种值的抽象表示,代表程序运行过程中内容可以修改的量,其功能就是存储用户的数据。GO语言作为强类型语言,编译时会检查变量的类型,约定了变量只能赋该类型的值(接口除外)。
分类
-
bool,string
bool:布尔类型,true/false
string:字符串类型 -
(u)int,(u)int8,(u)int32,(u)int64,uintptr
u代表有无符号或说是有无正负号
int类型会根据操作系统来决定是32位还是64位
uintptr代表指针类型。 -
byte,rune
byte和uint8表示范围是一样的,代表字节类型,表示一个字节的空间大小;
run长度是32位,互联网很多情况下采用UTF-8编码,所以run采用了4字节存储空间。 -
float32,float64,complex64,complex128
float32/64表示浮点数类型;complex64/128表示数学中的复数,有实部和虚部,complex64两部分都是32位float,complex128两部分都是64位float。应用开发过程中用的较少。
默认值/零值
- 整型默认值为0,浮点型是0.0
- 字符串零值是空字符串
- 布尔类型默认为false
- 切片,函数,指针变量默认值为nil
声明方式
- 一行一个变量
var <name> <type> - 多个变量一起声明,声明组
var (
id string
name int
isExist bool
)
- 短声明,只能在函数内
name:="GO语言温习" - 一行声明和初始化多个变量
name,isExist:="Go语言温习",true
var a int = 1
var b int = 2
b, a = a, b
- 通过new创建指针变量
//通过new(Type)创建一个Type类型的变量,并初始化为Type类型的零值,然后返回变量的地址
numptr:=new(int)
fmt.Println("ptr address:",ptr) //ptr address 0xc0000120e0
fmt.Println("ptr value:",*ptr) //ptr value 0
- make函数创建slice,map或chan类型变量
var slice = make([]int,0)
var m = make(map[string]int)
var c = make(chan int)
//其中chan只能用make创建和初始化,slice和map还可以采用如下方式
slice:=[]int{0,0}
m:=map[string]int{}
变量作用域
Go语言中变量是块作用域,块是使用{}定义的代码段,内层块可以直接访问到外层块的变量,如果内层块没有定义与外层块同名的变量情况下;没有嵌套的两个块,不可互相访问。
参考文章
掌握变量创建的六种方式