数组和切片
来源:互联网 发布:python opencv 与运算 编辑:程序博客网 时间:2024/06/05 12:07
一.数组
(1)数组是值类型。将一个数组赋值给另一个,会拷贝所有的元素。
(2) 如果你给函数传递一个数组,其将收到一个数组的拷贝,而不是它的指针。
(3)数组的大小是其类型的一部分,类型[10]int和[20]int是不同的。数组长度在声明后,就不可更改。
(2) 如果你给函数传递一个数组,其将收到一个数组的拷贝,而不是它的指针。
(3)数组的大小是其类型的一部分,类型[10]int和[20]int是不同的。数组长度在声明后,就不可更改。
数组的声明 :必须要有长度,而没有长度的就是切片
ArrayType = "[" ArrayLength "]" ElementType .
例如:
var a [32] int
var b [3][5] int
二. 切片
2.1切片声明:
SliceType = "[" "]" ElementType .例如:
var a []int
没有初始化的slice为nil。
2.2一般来说,有两种方式来初始化切片:
切片可以通过数组来初始化,也可以通过内置函数make()初始化 .初始化时len=cap,在追加元素时如果容量cap不足时将按len的2倍扩容
(1)通过数组
var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
var mySlice []int = myArray[:5]
(2)通过make
语法:make([]T, length, capacity)
创建一个初始长度为5,容量为10为切片,切片的每个元素都为0:
slice1 := make([]int, 5, 10)
创建一个长度为5的切片,并初始化切片的每个元素:
slice2 := []int{1, 2, 3, 4, 5}
(1)通过数组
var myArray [10]int = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
var mySlice []int = myArray[:5]
(2)通过make
语法:make([]T, length, capacity)
创建一个初始长度为5,容量为10为切片,切片的每个元素都为0:
slice1 := make([]int, 5, 10)
创建一个长度为5的切片,并初始化切片的每个元素:
slice2 := []int{1, 2, 3, 4, 5}
2.3切片的len和cap
长度是指已经被赋过值的最大下标+1,可通过内置函数len()获得。容量是指切片目前可容纳的最多元素个数,可通过内置函数cap()获得
cap是从切片的下标开始算起
2.4 子切片和append增加的元素都是对源切片的修改,传递的都是引用
nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
printSlice(nums, "nums")
nums1 := nums[0:2]
nums3 := append(nums1, 111)
nums3[0] = 121
printSlice(nums1, "nums1")
printSlice(nums3, "nums3")
printSlice(nums, "nums")
nums1 := nums[0:2]
nums3 := append(nums1, 111)
nums3[0] = 121
printSlice(nums1, "nums1")
printSlice(nums3, "nums3")
nums2 := nums[0:4]
printSlice(nums2, "nums2")
printSlice(nums2, "nums2")
结果:
nums=> len=10 cap=10 slice=[0 1 2 3 4 5 6 7 8 9]
nums1=> len=2 cap=10 slice=[121 1]
nums3=> len=3 cap=10 slice=[121 1 111]
nums2=> len=4 cap=10 slice=[121 1 111 3]
2.5数组和切片的遍历
for i, v := range mySlice {
fmt.Println("mySlice[", i, "] =", v)
fmt.Println("mySlice[", i, "] =", v)
}
2.6 赋值与使用
切片是引用类型,在使用时需要注意其操作。查看示例代码 ,在线运行示例代码 切片可以通过内置函数append(slice []Type,elems ...Type)追加元素,elems可以是一排type类型的数据,也可以是slice,因为追加的一个一个的元素,因此如果将一个slice追加到另一个slice中需要带上"...",这样才能表示是将slice中的元素依次追加到另一个slice中。另外在通过下标访问元素时下标不能超过len大小,如同数组的下标不能超出len范围一样。
s :=append(s,1,2,3,4)
s :=append(s,s1...) s1是切片
s :=append(s,1,2,3,4)
s :=append(s,s1...) s1是切片
0 0
- golang 数组和切片
- 数组和切片
- go-数组和切片
- Python 切片 和 数组推导
- go 数组和数组切片比较
- 数组切片
- 数组切片
- Golang Array 数组 和 Slice 切片
- GoLang学习 -- array(数组)和slice(切片)
- Golang Array 数组 和 Slice 切片
- perl切片(数组和哈希)
- Python创建二维数组和切片操作
- perl 数组和哈希切片
- Golang教程:(十一)数组和切片
- NumPy数组基本的索引和切片
- 4. 数组、切片和映射(Go Tutorial)
- Go学习笔记:数组和数组切片的行为
- Go语言学习笔记之数组、数组切片和map
- Android Developer:Allocation Tracker演示
- LeetCode:Pascal's Triangle
- 简易在线投票系统(php)——utf8编码问题
- Windows下无法使用Nginx作为一个http文件服务器(权限问题?)
- 通过RFC(C#)连接SAP系统
- 数组和切片
- 类目延展代理协议
- Mybatis——MetaObject学习
- GRE单词里的大数据和丰富情感,一笑
- django static_root static_url media_root mdia_url详解
- sql小结3
- JDBC实现事务
- Mac OS X安装Nginx
- 将交叉编译好的OpenCV移植到ARM平台