go语言基础数据结构学习---- 数组, 列表(list)和切片(slice)

go语言基础数据结构学习–> 数组, 列表(list)和切片(slice)

go 语言中的  数组是类型相同的元素的集合, 
            列表是双链表的容器, 可以添加不同类型的数据
            切片是对现有数组的引用, 比数组更方便灵活, 还可以追加数据
package main

import (
    "container/list"
    "fmt"
)

func main() {
    // 切片 slice  比较常用, 很灵活
    list1 := [6]int{1,2,3,4}   //6是总数, 后面是值, 如果不够会自动补0
    list6 := []string{"a", "b"}
    var list2 [3]int
    // 声明列表, 下面两种为初始化, 生成内存地址, 双链表 ----容器
    var list3 = list.List{}
    list4 := list.New()
    //多维数组
    list5 := [3][2]string{
        {"飞", "小"},
        {"祥", "泰"},
        {"德", "丙"},
    }


    //列表插入方法
    a1 := list3.PushFront(2) //从左插入
    a2 :=list3.PushBack(1)  //从右插入
    list3.InsertAfter("after", a2)   //在 a2之后
    list3.InsertBefore("before", a1) //在 a1之前

    //列表删除
    list3.Remove(a2)

    //列表(容器)遍历
    for x := list3.Front(); x != nil; x = x.Next() {
        if x.Value == "after" {
            fmt.Println(x.Value)
        }
        fmt.Print(x.Value, " , ")
    }
    //切片遍历
    for _,x := range list1{
        if x == 1{
            fmt.Println(x)
        }
    }
    //切片追加
    list6 = append(list6, "c")
    //也可以和python一样根据索引覆盖值
    list1[5] = 9
    list2[2] = 9

    
    fmt.Println(list1)
    fmt.Println(list2)
    printlist(list3)
    fmt.Println(list4)
    fmt.Println(list5)
    fmt.Println(list6)
}

func printlist(lists list.List)  {
    for x := lists.Front(); x != nil; x = x.Next() {
        fmt.Println(x.Value)
    }
}

参考学习文档:
https://www.cnblogs.com/liuzhongchao/p/9159896.html
http://c.biancheng.net/view/35.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小僵尸打字员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值