变量
声明
var 变量名 变量类型
比如
var name string
var age int
var isOk bool
批量声明
var (
a string
b int
c bool
)
变量的初始化
var 变量名 类型 = 表达试
比如
var name string = "lvlanbing"
var age int = 18
or
var name, age = "lvlanbing", 18
有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。
短变量声明
n := 100
name := "lvlanbing"
常量
把变量初始化中的var替换成const
类型
需要注意的类型
array, struct(可以当作class使用), slice, map, channel, interface, function.
没有对象,接口就是一个类型。
array
数组是同一种数据类型的固定给长度序列。其中长度也是数组类型的 一部分。
var arr0 [5]int = [5]int{1, 2, 3}
var arr1 = [5]int{1, 2, 3, 4, 5}
var arr2 = [...]int{1, 2, 3, 4, 5, 6}
var str = [5]string{3: "hello world", 4: "tom"}
切片Slice
slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案.
切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。(我们可以获取切片的最大容量等数据)
切片长度可以改变,是一个可变的数组
切片的定义:var 变量名 []类型,比如 var str []string var arr []int
可以通过make来创建切片
var slice []type = make([]type, len)
slice := make([]type, len)
slice := make([]type, len, cap)
用append内置函数操作切片
指针
区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。
Go语言中的指针操作非常简单,只需要记住两个符号:&(取地址)和*(根据地址取值)。
map
map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。
map[KeyType]ValueType