GO 语言学习记录3--容器

GO 语言容器
1. 数组的比较,很方便直接用== !=
2. 多维数组的声明
    // 声明并初始化数组中索引为 1 和 3 的元素
    array = [4][2]int{1: {20, 21}, 3: {40, 41}}
    // 声明并初始化数组中指定的元素,即外面第一个元素(数组)中的第一个子元素赋值为20
    array = [4][2]int{1: {0: 20}, 3: {1: 41}}
3. 切片(切片(slice)是对数组的一个连续片段的引用,所以切片是一个引用类型()
    取出的元素数量为:结束位置 - 开始位置;
    取出元素不包含结束位置对应的索引,切片最后一个元素使用 slice[len(slice)] 获取
    两者同时为 0 时,等效于空切片,一般用于切片复位。
    3.1 声明切片
        // 声明整型切片
        var numList []int
        // 声明一个空切片,不为nil,因为已分配内存,切片不能直接判断是否相等
        var numListEmpty = []int{}
        //使用make生成切片,其中 Type 是指切片的元素类型,size 指的是为这个类型分配多少个元素,cap 为预分配的元素数量,
        这个值设定后不影响 size,只是能提前分配空间,降低多次分配空间造成的性能问题
        make( []Type, size, cap )
        //添加元素
        var a = []int{1,2,3}
        a = append([]int{0}, a...) // 在开头添加1个元素
        a = append([]int{-3,-2,-1}, a...) // 在开头添加1个切片

        var a []int
        a = append(a[:i], append([]int{x}, a[i:]...)...) // 在第i个位置插入x
        a = append(a[:i], append([]int{1,2,3}, a[i:]...)...) // 在第i个位置插入切片
        //copy() 函数的使用格式
        copy( destSlice, srcSlice []T) int
        //删除元素头部
        a = []int{1, 2, 3}
        a = a[1:] // 删除开头1个元素
        a = a[N:] // 删除开头N个元素
        //删除中部元素
        a = []int{1, 2, 3, ...}
        a = append(a[:i], a[i+1:]...) // 删除中间1个元素
        a = append(a[:i], a[i+N:]...) // 删除中间N个元素
        a = a[:i+copy(a[i:], a[i+1:])] // 删除中间1个元素
        a = a[:i+copy(a[i:], a[i+N:])] // 删除中间N个元素
4. map 
    var mapname map[keytype]valuetype
    mapname 为 map 的变量名。
    keytype 为键类型。
    valuetype 是键对应的值类型。
    //map 容量
    map2 := make(map[string]float, 100)
    
7. 遍历列表
    l := list.New()
    // 尾部添加
    l.PushBack("canon")
    // 头部添加
    l.PushFront(67)
    for i := l.Front(); i != nil; i = i.Next() {
        fmt.Println(i.Value)
    }
8. new 和 make 的区别
    new 只分配内存,而 make 只能用于 slice、map 和 channel 的初始化
9. goto与return

发布了32 篇原创文章 · 获赞 6 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41278749/article/details/103292017