• golang学习(三)—— 数组、切片、map


    编码规范:可参考这篇文章:Golang编码规范

    数组(array)

    var arr [n]type    | n为数组长度,type为元素类型

    arr :=[...]int{4,5,6}   | 自动计算长度分配空间   

    特点:数组的长度在定义后无法再次修改

               数组是值类型,每次传递都将产生一份副本

    注:数组长度属于数组类型的一部分,例如:[3]int 和 [4]int 是不同的类型

    切片(slice)

    数组的主要缺点就是我们需要预先知道数组长度,但有时候,这是不可能的,golang提供了数组切片(slice)功能来弥补数组的不足

    切片本身并非动态数组或数组指针,它内部通过指针引用底层数组,设定相关属性将数据读写操作限定在指定区域内

    type slice struct{
      array unsafe.Pointer
      len int
       cap int
    }
    x := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
    s1 := x[:]   //[0 1 2 3 4 5 6 7 8 9]
    s2 := x[2:6] //[2 3 4 5]
    //x[los:high:max]——>len=high-low,cap=max-low
    //len用于限定可读元素数量,cap表示切片所引用数组片段的真实长度
    //人话:s3就是在x数组的 第2位 到 第9位 中取前(6-2=)4个元素
    s3 := x[2:6:9] //[2 3 4 5]
    s4 := x[3:]    //[3 4 5 6 7 8 9]  等价于x[3:len(x)]
    s5 := x[:3]    //[0 1 2]   等价于x[0:3] 

    字典(map)

    map [ keytype ] valuetype

    数组和切片的索引只能是int类型,map的索引可以是你定义的类型

    m := make(map[string]int)
    m["id"] = 12
    m["minute"] = 60
    m["score"] = 99
    

    1,地图是无序的,每次打印地图都会得到不同的结果

    2,地图没有固定的长度,它是一种引用类型,就像切片一样。

  • 相关阅读:
    React.render和reactDom.render的区别
    CSS中position的4种定位详解
    React.js入门必须知道的那些事
    JS处理事件小技巧
    React.js深入学习详细解析
    React.js实现原生js拖拽效果及思考
    Linux ./configure && make && make install 编译安装和卸载
    Redis set集合结构及命令详解
    Redis数据过期策略
    Redis TTL命令
  • 原文地址:https://www.cnblogs.com/ecake/p/8716736.html
Copyright © 2020-2023  润新知