当前位置:网站首页>数组与切片
数组与切片
2022-08-09 03:00:00 【笑 瘾】
一、数组
1、数组的定义:
相同唯一的类型、长度固定、连续的数据
定义了数组 balance ⻓度为 5 类型为 float32
var balance = [5]float32{
1000.0, 2.0, 3.4, 7.0, 50.0}
balance := [5]float32{
1000.0, 2.0, 3.4, 7.0, 50.0}
如果设置了数组的⻓度,我们还可以通过指定下标来初始化元素,将索引为 1 和 3 的元素初始化
balance := [5]float32{
1:2.0,3:7.0}
2、数组的取值:
结合下标就可以进行取值
variable_name[n]
3、二维数组
定义了数组 balance ⻓度为 10 *10类型为 float32
var balance [10][10]float32
balance[0][0] = 100.0
fmt.Println(&balance[0], &balance[1][0], &balance[2])
fmt.Println(balance)
二、切片
1、切片的定义:相同唯一类型、长度是不固定的
2、切片的初始化
1.直接初始化切⽚,[] 表示是切⽚类型,{
1,2,3} 初始化值依次是 1,2,3,其 cap=len=3。
s :=[] int {
1,2,3 }
2.初始化切⽚ s,是数组 arr 的引⽤。
s := arr[:]
3.将 arr 中从下标 startIndex 到 endIndex-1 下的元素创建为⼀个新的切⽚。
s := arr[startIndex:endIndex]
4.默认 endIndex 时将表示⼀直到arr的最后⼀个元素。
s := arr[startIndex:]
5.默认 startIndex 时将表示从 arr 的第⼀个元素开始。 [start,end)
s := arr[:endIndex]
6.通过切⽚ s 初始化切⽚ s1。
s1 := s[startIndex:endIndex]
7.通过内置函数 make() 初始化切⽚s,[]int 标识为其元素类型为 int 的切⽚。
s :=make([]int,len,cap)
3、len() 和 cap() 函数
切⽚是可索引的,并且可以由 len() ⽅法获取⻓度。
切⽚提供了计算容量的⽅法 cap() 可以测量切⽚最⻓可以达到多少。
package main
import "fmt"
func main() {
var numbers = make([]int,3,5)
printSlice(numbers)
}
func printSlice(x []int){
fmt.Printf("len=%d cap=%d slice=%v**\n**",len(x),cap(x),x)
}
//以下实例运⾏输出结果为:
len=3 cap=5 slice=[0 0 0]
4、append() 和 copy() 函数
append():追加元素
copy(slice1,slice2):将slice2拷贝到slice1里面去
package main
import "fmt"
func main() {
var numbers []int
printSlice(numbers)
/* 允许追加空切⽚ */
numbers = append(numbers, 0)
printSlice(numbers)
/* 向切⽚添加⼀个元素 */
numbers = append(numbers, 1)
printSlice(numbers)
/* 同时添加多个元素 */
numbers = append(numbers, 2,3,4)
printSlice(numbers)
/* 创建切⽚ numbers1 是之前切⽚的两倍容量*/
numbers1 := make([]int, len(numbers), (cap(numbers))*2)
/* 拷⻉ numbers 的内容到 numbers1 */
copy(numbers1,numbers)
printSlice(numbers1)
}
func printSlice(x []int){
fmt.Printf("len=%d cap=%d slice=%v**\n**",len(x),cap(x),x)
}
//以下代码执⾏输出结果为:
len=0 cap=0 slice=[]
len=1 cap=1 slice=[0]
len=2 cap=2 slice=[0 1]
len=5 cap=6 slice=[0 1 2 3 4]
len=5 cap=12 slice=[0 1 2 3 4]
5、切片和数组的区别
切片:引用(地址相同)
在函数中修改值,会影响外部函数
数据拷贝的时候,拷贝的是引用,也就是深拷贝
数组:值
在函数中修改值,不会影响外部函数
数据拷贝的时候,只拷贝值,另一个数组不受影响
边栏推荐
猜你喜欢
第一部分:和数组相关的问题
Postman interface test [official website] latest version installation and use tutorial
关于eBPF与可观测性,你想知道的都在这里
Building PO layered architecture of automated testing framework from 0
What aspects should we start with for interface security testing?
"Lonely Walking on the Moon": Two choices of Duguyue, let a "middleman" become a big hero
SA-SSD环境搭建——血与泪的教训
Shell脚本:正则表达式
【剑指offer】二进制中1的个数&&2的幂
【机器学习】21天挑战赛学习笔记(三)
随机推荐
三箭资本濒临破产?市场陷入1907年恐慌之中?加密监管不可避免
Linux安装Redis
通过kvm创建共享磁盘
Matlab实现异构交通流
【面试整理】-- 多线程
Jenkins configuration nail notification
Zabbix 5.0 监控教程(五)
基于NLP的智能问答系统核心技术
Hudi从内核到实战介绍
flatMap() :对每个元素执行映射函数并将结果展平
第一部分:和数组相关的问题
jsx定义与规则
Kubernetes:(十五)PV与PVC的《恩怨情仇》
JSON的使用
2027年加密市场将会发生什么?思维的跨越?长期预测无法脱离形势变化
【扫雷--1】
20220530设计问题:常数时间插入、删除和获取随机元素
【剑指offer】二进制中1的个数&&2的幂
unshift() :将一个或多个元素添加到数组的开头
SQLserver重新累计问题