GO中的数组切片

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)
时间: 2024-12-08 22:00:48

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

golang中的数组切片

概念:基于数组,数组切片添加了一系列管理功能,可以随时动态扩充存放空间,并且不会导致所管理的元素被重复复制. 创建数组切片: 方法一,基于数组: package main import "fmt" func main() { //define an array var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} //create a slice based on array var mySlice []int = m

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([3, 4, 5, 6, 7, 8, 9])>>a[-7 -1:-1] array([2, 3, 4, 5, 6, 7, 8])>>a[-7 -1:-2] array([2, 3, 4, 5, 6, 7])>>a[-7 -2:-1] array([1, 2, 3, 4, 5,

Python中numpy 数组的切片操作

Python中numpy 数组的切片操作简介取元素 X[n0,n1]切片 X[s0:e0,s1:e1]切片特殊情况 X[:e0,s1:]示例代码输出结果简介X[n0,n1]是通过 numpy 库引用二维数组或矩阵中的某一段数据集的一种写法.类似的,X[n0,n1,n2]表示取三维数组,取N维数组则有N个参数,N-1个逗号分隔.以二维数组为例: import numpy as npX = np.array([[0,1,2,3],[10,11,12,13],[20,21,22,23],[30,31,

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

Go中的数组与C的数组一样,只是定义方法不同 c: int a[10][10] Go [10][10]int 定义并初始化 array1 := [5]int{1,2,3,4,5} 变量名 := [index]类型{也可不加} 1.元素访问:1.跟C语言一样通过数组来访问 2.通过关键字range来访问 如:for i,v :=range array{ fmt.Printlb(*Array element[",i,"]=*,v) }第一个表示下标从0到len(array)-1 2.值类型

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

package main import "fmt" func main() { myfunc1(88, 42, 12, 56) //传递不定数量的参数 myfunc2([]int{88, 42, 12, 56}) //传递一个数组切片 } func myfunc1(args ...int) { //接受不定数量的参数,这些参数的类型全部是int for _, arg := range args { fmt.Println(arg) } } func myfunc2(args []int

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

在Swift中的数组和字典中下标是非常常见的,数组可以通过索引下标进行元素的查询,字典可以通过键下标来获取相应的值.在使用数组时,一个常见的致命错误就是数组越界.如果在你的应用程序中数组越界了,那么对不起,如果由着程序的性子的话是会崩溃的.为了防止崩溃呢,我们会对集合做一些安全的处理.比如对数组进行扩展,从而对数组的索引进行安全检查,保证数组的index在正常范围内.在Objective-C中也是经常对数组,字典等做一些处理操作. 今天的博客的主要内容是先对Objective-C中常用集合的安全

Go语言数组,切片

数组声明 Go 语言数组声明需要指定元素类型及元素个数,语法格式如下: var variable_name [SIZE] variable_type 以上为一维数组的定义方式.数组长度必须是整数且大于 0.例如以下定义了数组 balance 长度为 10 类型为 float32: var balance [10] float32 初始化数组 以下演示了数组初始化: var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0} 初始化数组中 {} 中的

go语言 类型:数组切片

初看起来,数组切片就像一个指向数组的指针,实际上它拥有自己的数据结构,而不仅仅是个指针.数组切片的数据结构可以抽象为以下3个变量: 1.一个指向原生数组的指针: 2.数组切片中的元素个数: 3.数组切片已分配的存储空间. slice不是一个值类型,而是一个引用类型,就好比指针一样,对slice取得的元素进行写操作实际是影响到了底层的数组层,slice真的只是一层薄薄的操作封装罢了.因此,slice有一个重要的用途就是作为函数的参数,就这可以避免直接传递数组而导致整个数组发生一次内存拷贝.

[翻译] NumSharp的数组切片功能 [:]

原文地址:https://medium.com/scisharp/slicing-in-numsharp-e56c46826630 翻译初稿(英文水平有限,请多包涵): 由于Numsharp新推出了数组切片这个牛逼的功能,所以.NET社区距离拥有强大的开源机器学习平台又近了一步. Python之所以是机器学习的首选语言,部分原因就是因为它拥有一些牛逼的库,例如NumPy和Tensorflow.与此同时,C#开发人员也迫切需要用于机器学习和数据科学的强大开源库.而NumSharp,这个由 SciS