程序运行过程当中的数据都是保存在内存中,咱们想要在代码中操做某个数据时就须要去内存上找到这个变量,可是若是咱们直接在代码中经过内存地址去操做变量的话,代码的可读性会很是差并且还容易出错,因此咱们就利用变量将这个数据的内存地址保存起来,之后直接经过这个变量就能找到内存上对应的数据了。函数
标准声明spa
var 变量名 变量类型 // 例: var age int
批量声明指针
var ( a string b int c bool d float32 )
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操做。每一个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0
。 字符串变量的默认值为空字符串
。 布尔型变量默认为false
。 切片、函数、指针变量的默认为nil
。code
标准初始化blog
var 变量名 类型 = 表达式 // 例: var age int = 18 var age, name = 18, "xiaoming"
类型推导索引
当将变量的类型省略时,编译器会根据等号右边的值来推导变量的类型完成初始化内存
var age = 18 var name = "xiaoming"
函数内部声明并初始化字符串
在函数内部,能够使用更简略的 :=
方式声明并初始化变量。get
package main import ( "fmt" ) func main(){ a := 100 fmt.Println(a) }
匿名变量编译器
在使用多重赋值时,若是想要忽略某个值,能够使用下划线_
,例如:
package main import ( "fmt" ) func fn()(int, string){ return 18, 'xiaoming' } func main(){ age, _ := fn() fmt.Println(age) }
匿名变量不占用命名空间,不会分配内存,因此匿名变量之间不存在重复声明。
var
、const
、func
等):=
不能使用在函数外。_
多用于占位,表示忽略值。相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明很是相似,只是把var
换成了const
,常量在定义的时候必须赋值。
标准声明
const pi = 3.14
多个声明
const ( a = 1 b = true )
省略值处理
当使用const
声明多个值时,若是省略了值,则会与上一行的值相同,若是开始的未声明则报错
const ( a1 = 100 // a1未声明则会报错 a2 // 100 a3 // 100 )
iota
是go语言的常量计数器,只能在常量的表达式中使用。
iota
在const
关键字出现时将被重置为0。const
中每新增一行常量声明将使iota
计数一次(iota
可理解为const
语句块中的行索引)。 使用iota
能简化定义,在定义枚举时颇有用。
示例
const ( n1 iota // 0 n2 // 1 n3 // 2 n4 // 3 )
示例
const ( n1 iota // 0 n2 // 1 _ n4 // 3 )
示例
const ( n1 iota // 0 n2 = 11 n3 // 2 )
示例
const ( _ = iota a_10 = 1<<iota a_100 = 1<<iota a_1000 = 1<<iota )