热门IT资讯网

golang 数组切片和字典

发表于:2024-11-21 作者:热门IT资讯网编辑
编辑最后更新 2024年11月21日,golang语言的数组 切片和字典package mainimport ( "fmt")func main(){ //定长为数组 不定长为切片 //数组 var a[10] i

golang语言的数组 切片和字典

package mainimport (    "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...)      // 切片容量的扩展     * 每次只追加一个元素,每一次都是上一次的2倍     * 追加的超过原来容量的1倍,就等于原来的容量+扩容元素个数的最接近的偶数      * 如果切片的容量大于了1024,后续就每次扩容0.25倍 ?    //排序    排序操作主要都在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,        }            }    }


0