主要讨论四种类型——数组、slice、map和结构体
数组和结构体聚合类型 --数组和结构体都是有固定内存大小的数据结构
--数组:由同构的元素组成——每个数组元素都是完全相同的类型
--结构体:由异构的元素组成
slice和map则是动态的数据结构,它们将根据需要动态增长。
一。数组
package main import ( "fmt" ) func main() { var a [3]int //声明数组,默认数组每个元素都被初始化为0值 fmt.Println(a[0]) //打印a数组的第1个元素值 0 fmt.Println(a[len(a)-1]) //打印a数组的倒数第1个值 0 fmt.Println("====================================") for i,v:=range a{ //range a:将a数组的索引和值分别赋值给i和v fmt.Printf("%d %d ",i,v) //打印值 0 0 // 1 0 // 2 0 } fmt.Println("====================================") for _,v:=range a{ //range a:将a的索引值赋值给_代表不关心索引值,将a数组值循环赋值给v fmt.Printf("%d ",v) //打印值 0 // 0 // 0 } fmt.Println("====================================") var p [3]int=[3]int{1,2,3} //初始化数组,值为1,2,3 p1:=[...]int{1,2,3} //同上述p等价,数组长度位置"...",代表数组长度根据初始化值个数计算 fmt.Printf("%T ",p1) //[3]int var q [3]int=[3]int{1,2} //初始化数组,值为1,2,0 }
package main import ( "fmt" ) func main() { type Currency int const ( USD Currency = iota // 美元 EUR // 欧元 GBP // 英镑 RMB // 人民币 ) symbol := [...]string{USD: "$", EUR: "€", GBP: "£", RMB: "¥"} fmt.Println(RMB, symbol[RMB]) // "3 ¥" }