golang中的数组切片

简介:

概念:基于数组,数组切片添加了一系列管理功能,可以随时动态扩充存放空间,并且不会导致所管理的元素被重复复制。


创建数组切片:

方法一,基于数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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  = myArray[:5]
 
     fmt.Println( "Elements of myArray: " )
     for  _, v := range myArray {
         fmt.Print(v,  " " )
     }
 
     fmt.Println( "\nElements of mySlice: " )
     for  _, v := range mySlice {
         fmt.Print(v,  " " )
     }
 
     fmt.Println()
}

运行结果:

Elements of myArray: 

1 2 3 4 5 6 7 8 9 10 

Elements of mySlice: 

1 2 3 4 5

方法二,直接创建:

Golang提供的内置函数make()可以用于灵活地创建数组切片。

创建一个初始元素个数为5的数组切片,元素初始值为0:

mySlice := make([]int, 5)

创建一个初始元素个数为5的数组切片,元素初始值为0,并预留10个元素的存储空间:

mySlice := make([]int, 5, 10)

直接创建并初始化包含5个元素的数组切片:

mySlice := []int{1, 2, 3, 4, 5}


遍历:

传统遍历:

for i:=0; i<len(mySlice); i++ {

    fmt.Println("mySlice[", i, "] =", mySlice[i])

}

range遍历:

for i, v := range mySlice {

    fmt.Println("mySlice[", i, "] =", v)

}


存储能力(capacity):

概念:元素个数和分配的空间可以是两个不同的值。

cap():返回数组切片分配的空间大小

len():返回数组切片中当前所存储的元素个数

1
2
3
4
5
6
7
8
9
10
package main
 
import  "fmt"
 
func main() {
     mySlice := make([] int , 5, 10)
 
     fmt.Println( "len(mySlice):" , len(mySlice))
     fmt.Println( "cap(mySlice):" , cap(mySlice))
}

输出结果:

len(mySlice): 5

cap(mySlice): 10


append():

继续新增元素,下面代码可从尾端给mySlice加上三个元素,从而生成一个新的数组切片。

mySlice = append(mySlice, 1, 2, 3)

下面代码直接将一个数组切片追加到另一个数组切片的末尾。

mySlice2 := []int{8, 9, 10}

mySlice = append(mySlice, mySlice2...)


基于数组切片创建数组切片:

oldSlice := []int{1, 2, 3, 4, 5}

newSlice := oldSlice[:3]


copy():

slice1 := []int{1, 2, 3, 4, 5}

slice2 := []int{5, 4, 3}

copy(slice2, slice1)    //只会复制slice1的前3个元素到slice2中

copy(slice1, slice2)    //复制slice2的3个元素到slice1的前三个位置


本文转自yeleven 51CTO博客,原文链接:http://blog.51cto.com/11317783/1875632
相关文章
|
16天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
26 7
|
2月前
|
存储 前端开发 Go
Go语言中的数组
在 Go 语言中,数组是一种固定长度的、相同类型元素的序列。数组声明时长度已确定,不可改变,支持多种初始化方式,如使用 `var` 关键字、短变量声明、省略号 `...` 推断长度等。数组内存布局连续,可通过索引高效访问。遍历数组常用 `for` 循环和 `range` 关键字。
|
15天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
100 67
|
1月前
|
Java Go 数据处理
go语言使用切片而非数组
【10月更文挑战第18天】
16 1
|
3月前
|
Go
Golang语言之切片(slice)快速入门篇
这篇文章是关于Go语言中切片(slice)的快速入门教程,详细介绍了切片的概念、定义方式、遍历、扩容机制、使用注意事项以及相关练习题。
38 5
|
3月前
|
Go
Golang语言之数组(array)快速入门篇
这篇文章是关于Go语言中数组的详细教程,包括数组的定义、遍历、注意事项、多维数组的使用以及相关练习题。
43 5
|
3月前
|
编译器 Go 索引
Go to Learn Go之数组
Go to Learn Go之数组
33 0
|
3月前
|
编译器 Go 索引
Go数组、多维数组和切片(动态数组),及常用函数len(),cap(),copy(),append()在切片中的使用
本文介绍了Go语言中数组、多维数组和切片(动态数组)的基本概念和操作,包括数组的定义、初始化、访问,多维数组的定义和访问,以及切片的创建、使用和扩容。同时,还讲解了切片中常用的函数len()、cap()、copy()和append()的使用方法。
|
4月前
|
存储 编译器 Go
|
4月前
|
存储 Go 数据处理
C 数组和 Go 切片的区别详解
【8月更文挑战第31天】
41 0