数据类型
- 数组
- 切片
- map
- struct
- 函数
- 接口
- channel
- 指针
数组(类似PHP索引数组,长度固定,值类型唯一)
func main() {
//数组
var arr1 [1]int //声明数组arr1长度为 1 类型为 int
var arr2 = [...]int{1, 2, 3, 4} //声明并初始化数组arr2,长度自动匹配
fmt.Printf("%T", arr1)
fmt.Printf("%T", arr2)
}
切片(动态数组)
func main() {
//声明
var s1 []int //nil
//字面量
s2 := []int{1,2,3,4}
//截取
s3 := s2[:]
//make
s4 := make([]int, 5) //
//new
s5 := *new([]int) //nil
s1 = append(s1, 1, 2, 3)
s2 = append(s2, 1, 2, 3)
s3 = append(s3, 1, 2, 3)
s4 = append(s4, 1, 2, 3)
printSlice(s1) //len=3 cap=4 slice=[1 2 3]
printSlice(s2) //len=7 cap=8 slice=[1 2 3 4 1 2 3]
printSlice(s3) //len=7 cap=8 slice=[1 2 3 4 1 2 3]
printSlice(s4) //len=8 cap=10 slice=[0 0 0 0 0 1 2 3]
printSlice(s5) //len=0 cap=0 slice=[]
}
func printSlice(x []int) {
fmt.Printf("len=%d cap=%d slice=%v\n", len(x), cap(x), x)
}
map(相当于PHP的关联数组)
func main() {
//map
var m1 map[string]string
var m2 = map[string]string{}
m3 := map[string]string{}
fmt.Println(m1)
fmt.Println(m2)
fmt.Println(m3)
}