您的位置:首页 > 编程语言 > Go语言

golang 数组切片和字典

2017-02-04 17:48 453 查看
golang语言的数组 切片和字典

package main
import (
"fmt"
)

func main(){
//定长为数组 不定长为切片
//数组 var a[10] int
//切片 var a[] int

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]
//多维数组
var a [2][3]int = [...][3]int{{1,2,3},{4,5,6}}

//切片合并
var a = []int{1,2,3}
var b = []int{4,5,6}
a = append(a,b...)

//排序
排序操作主要都在sort包中,导入就可以使用了。
import sort
sort.Ints #对整数进行排序
sort.Strings #对字符串进行排序
sort.Float64s #对浮点数排序

//查找
sort.SearchInts(a []int, b int) 从数组a中查找B,查找时会先进行排序然后在查找,返回下标 index
sort.SearchFloats(a []float64, b float64)
sort.SearchStrings(a p[]string,b string)

// 字典map
// 使用make来创建map
//声明时不会分配内存的,需要用make初始化才能分配内存进行操作
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,
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数组 切片 golang