golang语言的数组 切片和字典
package main import ( "fmt" ) func main(){ var a[10] int //定义一个数字长度为10,存储int类型 a[0] = 10 // 存储 a[1] = 20 a[2] = 30 a[3] = 40 fmt.Println(a[0],a[1],a[2],a[3]) //通过序列打印 fmt.Println(a) //打印整个数组,因为定义长度为10,而我们只存了4个,所有后面的部分将以零值填充。 // 运行结果 10 20 30 40 [10 20 30 40 0 0 0 0 0 0] //初始化并赋值 num := [5]int{1,2,3,4,5} //初始化并赋值 fmt.Println(num) //数组遍历 for i,value := range num{ //索引和值 fmt.Println(value,i) } //数组定义时可不定义切片大小 sliceOne := []int{1,2,3,4,5} fmt.Println(sliceOne[0],sliceOne[1],sliceOne[2]) //通过开始索引和结束索引创建一个新的切片 sliceTwo := sliceOne[1:3] //返回sliceOne中索引1到索引3,但不包含3 fmt.Println(sliceTwo) //运行结果:[2 3] //可省略开始索引,省略表示从索引0开始 fmt.Println(sliceOne[:3]) //返回索引0-索引3,不包含3 //可省略结束索引,省略表示直到最后一个 fmt.Println(sliceOne[1:]) //打印索引1到最后,全部被打印出来 运行结果:[2 3 4 5] //同事省略开始和结束表示复制全部切片 fmt.Println(sliceOne[:]) //使用make初始化并设定长度与容量 sliceThree := make([]int,5,10)//表示初始化一个切片,长度为5,最大容量为10,即在内存中申请了能放置10个长度的空间,这样在有新元素插入的时候就不用再动态分配空间提高效率。 fmt.Println(sliceThree) //运行结果:[0 0 0 0 0] //使用len 和cap 查看切片的长度和容量 fmt.Println(len(sliceThree)) fmt.Println(cap(sliceThree))//运行结果:5 10 //使用append来追加元素 sliceThree = append(sliceThree,2,3,4) fmt.Println(sliceThree) //运行结果:[0 0 0 0 0 1 2 3 4] // 字典map // 使用make来创建map m := make(map[string]int) //定义建值为字符串,值为整型 m["first"] = 1 fmt.Println(m["first"]) //运行结果:1 m["first"] = 2 fmt.Println(m["first"]) //运行结果:2 //使用len获取map长度 fmt.Println(len(m)) //运行结果:1 //检查map中是否包含某个建值 v,ok :=m["third"] //如果包含建值third那么,v等于third对应的值,ok为true,否则v为零值,ok为false fmt.Print(v,ok) //运行结果:0 false //delete删除map中的建值对 delete(m,"first") fmt.Println(m) //创建的时候初始化 var mp = map[string]int{ "first" : 1, "second" : 2, } //字典嵌套 outer := map[string]map[string]int{ "inner1":map[string]int{ "first":1, "second":2, } "inner2":map[string]int{ "first":3, "second":4, } } }
本文出自 “欺壹世De博客” 博客,请务必保留此出处http://qiyishi.blog.51cto.com/5731577/1894909
原文:http://qiyishi.blog.51cto.com/5731577/1894909