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)

GO中的数组切片的更多相关文章

  1. go语言中的数组切片:特立独行的可变数组

    go语言中的数组切片:特立独行的可变数组 初看go语言中的slice,觉得是可变数组的一种很不错的实现,直接在语言语法的层面支持,操作方面比起java中的ArrayList方便了许多.但是在使用了一段 ...

  2. Go中的数组切片的使用总结

    代码示例 package main import "fmt" func main(){ fmt.Println("Hello, world") // 定义数组的 ...

  3. Python中ndarray数组切片问题a[-n -x:-y]

    先看看如下代码: >>a=np.arange(10)>>a array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])>>a[-7:] array( ...

  4. Go语言中的数组与数组切片

    Go中的数组与C的数组一样,只是定义方法不同 c: int a[10][10] Go [10][10]int 定义并初始化 array1 := [5]int{1,2,3,4,5} 变量名 := [in ...

  5. Go语言中底层数组和切片的关系以及数组扩容规则

    Go语言中底层数组和切片的关系以及数组扩容规则 demo package main import ( "fmt" ) func main() { // 声明一个底层数组,长度为10 ...

  6. golang中不定参数与数组切片的区别

    package main import "fmt" func main() { myfunc1(, , , ) //传递不定数量的参数 myfunc2([], , , }) //传 ...

  7. 窥探Swift之数组安全索引与数组切片

    今天是元宵节,祝大家元宵节快乐!在Swift中的数组和字典中下标是非常常见的,数组可以通过索引下标进行元素的查询,字典可以通过键下标来获取相应的值.在使用数组时,一个常见的致命错误就是数组越界.如果在 ...

  8. go语言 类型:数组切片

    初看起来,数组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是个指针.数组切片的数据结构可以抽象为以下3个变量: 1.一个指向原生数组的指针: 2.数组切片中的元素个数: 3.数组切 ...

  9. Shell中的数组及其相关操作

    http://blog.csdn.net/jerry_1126/article/details/52027539 Shell中数据类型不多,比如说字符串,数字类型,数组.数组是其中比较重要的一种,其重 ...

随机推荐

  1. java后端程序员1年工作经验总结

    java后端1年经验和技术总结(1) 1.引言 毕业已经一年有余,这一年里特别感谢技术管理人员的器重,以及同事的帮忙,学到了不少东西.这一年里走过一些弯路,也碰到一些难题,也受到过做为一名开发却经常为 ...

  2. Java IO在实际开发中的应用

    IO是java绕不过去的槛,在开发中io无处不在, 正如同 世界上本没有路,java io写多了,也就知道了大体是什么意思,在读完thinking in java 感觉就更清晰了,结合具体的业务场景, ...

  3. gulp静态资源构建、压缩、版本号添加

    公司移动端商城使用前后分离方案,前台nginx静态文件,js使用requirejs模式,使用gulp压缩添加版本号时发现问题, 问题1.在公共的js配置中,引用的路径是写死的,缓存会一直存在. 解决方 ...

  4. PHP树结构,实现无限分级

    一.从数据库查出来的数据需要id.parentid.level. id唯一识别栏目,parentid为该栏目所属父类id,level标示该栏目是几级栏目.以下代码就可以实现一个简单的树结构. publ ...

  5. JDBC&&c3p0、事务、批处理、多线程 于一体的经典秘方QueryRunner

    目录: 基础篇_功能各自回顾 JDBC基础代码回顾(使用JdbcUtils工具简化) c3p0数据库连接池的使用(使用JdbcUtils工具简化) 大数据的插入(使用c3p0+JdbcUtils工具简 ...

  6. 利用Fiddler修改请求信息通过Web API执行操作(Action)实例

    本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复261或者20170724可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...

  7. webpack web-dev-server 热加载

    摘要 坑位: 千万不要webpack.config.js 加了HotModuleReplacementPlugin , web-dev-server 也加hot:true 配置, 会出现莫名的错误, ...

  8. cookie原理

    cookie原理 一般来说,Cookie通过HTTP Headers从服务器端返回到浏览器上.首先,服务器端在响应中利用Set-Cookie header来创建一个Cookie,然后,浏览器在它的请求 ...

  9. maven快速上手

    1.maven安装 首先下载apache-maven-3.3.3-bin.zip(版本可以自己根据自己想要的下载). 解压后如下:   接下来配置系统环境变量: 到此,maven安装好了,接下来输入 ...

  10. R语言 write.xlsx() 写入同一excel,及同一sheet注意

    write.xlsx(x, file, sheetName="Sheet1", col.names=TRUE, row.names=TRUE, append=FALSE, show ...