GO中的数组切片可以看做是功能更强大的数组,在append数据时,可以自动调整内存大小以适应数据实际大小,有些类似于C#中的List<T>。

GO 中数组切片的“容量”与实际储存的大小可以不同,比如一个杯子容量是500ml,实际只装了200ml的水。

数组切片的基本用法:

fmt.Println("数组切片可以看做是一种比普通数组更强大的数组")
    //数组切片
    fmt.Println("数组切片:")
    fmt.Println("首先创建数组:")
    var aryVal []int = []int{1, 2, 3, 4, 5, 6, 7, 8}
    //fmt.Println("Arry = ", aryVal)
    //根据数组创建数组切片
    fmt.Println("根据数组创建数组切片[从 0 ~ 2]:")
    var aryClince []int = aryVal[:3]
    fmt.Println("aryClince = ", aryClince)
    var aryClince2 []int = aryVal[3:len(aryVal)]
    fmt.Println(aryClince2)
    //直接通过make函数床架数组切片
    fmt.Println("直接通过make函数床架数组切片:")
    var slicel []int = make([]int, 6)
    fmt.Println("函数make创建的数组切片默认将元素初始化为对应类型的默认值:")
    fmt.Println("slicel = ", slicel)
    for i, _ := range slicel {
        slicel[i] = i + 1
    }
    fmt.Println("对切片赋值后:")
    fmt.Println(slicel)

    fmt.Println("切片的储存能力和当前储存量可以不同")
    var slicel2 []int = make([]int, 12, 20)
    for i := 0; i <= 4; i++ {
        slicel2[i] = i + 1
    }
    fmt.Println("slicel2 = ", slicel2)
    fmt.Println("cap of slicel2(切片预留的储存能力) = ", cap(slicel2))
    fmt.Println("length of slicel2(切片当前储存量) = ", len(slicel2))
    //切片后动态追加数据  使用append函数追加数据
    var slicel4 []int = make([]int, 5, 15)
    for i := 0; i < len(slicel4); i++ {
        slicel4[i] = i + 1
    }
    fmt.Println("slicel4 = ", slicel4)
    //
    slicel4 = append(slicel4, 9, 0, 1, 2, 3)
    fmt.Println("Append datas :", slicel4)
    temslicel := []int{22, 3, 44, 55, 66, 77, 88}
    slicel4 = append(slicel4, temslicel...) //注:后面 ... 表示将切片打散为单个元素后进行插入
    fmt.Println("Appended slicel:", slicel4)

最新文章

  1. Java简易日历的实现
  2. 初识ZooKeeper
  3. python操作Excel--使用xlrd
  4. source tree 推送错误解决
  5. 页面置换算法 - FIFO、LFU、LRU
  6. Jenkins控制台中文输出乱码解决方法
  7. U3D协程Coroutine之WWW与Update()的并行测试
  8. 开源堡垒机GateOne的安装、配置笔记
  9. openerp学习笔记 错误、警告、提示、确认信息显示
  10. Spring 从零開始-03
  11. Oracle if else if for case
  12. QT5.3无法自动调用incomingConnection函数的问题
  13. java与javac命令笔记
  14. C语言入门(5)——运算符与表达式
  15. 如何快速方便的输出向量vector容器中不重复的内容
  16. ng-cordova(插件库)
  17. 一键安装Android开发环境
  18. 浅谈Java语言中ArrayList和HashSet的区别
  19. Mac OS X系统下,svn: Can&#39;t remove file Operation not permitted.解决方案
  20. golang使用 gzip压缩

热门文章

  1. isNAN()的使用
  2. c++ new delete 常踩的坑
  3. 从一个针对ASP.NET MVC框架的Controller.Action的请求处理顺序来说整个请求过程。
  4. 互联网级监控系统必备-时序数据库之Influxdb集群及踩过的坑
  5. 部署服务能在Dynamics CRM Online上使用吗?
  6. 设计模式 - 代理模式(jdk)
  7. jvm004 解析与分派
  8. Properties读取属性文件
  9. Hibernate 实体关联关系映射----总结
  10. 史上最易懂——ReactNative分组列表SectionList使用详情及示例详解