当前位置:网站首页>[GO]、数组与切片
[GO]、数组与切片
2022-08-09 05:53:00 【FanMY_71】
1、数组
Go 语⾔提供了数组类型的数据结构。
数组是具有相同唯⼀类型的⼀组已编号且⻓度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符 串或者⾃定义类型。
数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第⼀个元素索引为 0,第⼆个索引为 1,以 此类推。

1.1、数组的定义
= 是赋值, := 是声明变量并赋值

1.2、数值取值

1.3、二维数组

2.Go语言切片(slice)
Go 语⾔切⽚是对数组的抽象。
Go 数组的⻓度不可改变,在特定场景中这样的集合就不太适⽤,Go 中提供了⼀种灵活,功能强悍的内置类型切⽚ ("动态数组"),与数组相⽐切⽚的⻓度是不固定的,可以追加元素,在追加时可能使切⽚的容量增⼤。
切片中的概念:
- len:长度
- cap:容量
2.1、定义切片

[[email protected] 08-06]# cat test.go
package main
import "fmt"
func main() {
var slice1 []int
fmt.Println(slice1)
var slice2 []int = make([]int,5)
fmt.Println(slice2)
slice3 := make([]int,5)
fmt.Println(slice3)
}
[[email protected] 08-06]# go run test.go
[]
[0 0 0 0 0]
[0 0 0 0 0]2.2、切片初始化

[[email protected] 08-06]# cat test.go
package main
import "fmt"
func main() {
s := [] int{1,2,3}
s1 := s[0:2]
fmt.Println(s,s1)
}
[[email protected] 08-06]# go run test.go
[1 2 3] [1 2]
2.3、len()和cap()函数
切⽚是可索引的,并且可以由 len() ⽅法获取⻓度。
切⽚提供了计算容量的⽅法 cap() 可以测量切⽚最⻓可以达到多少。
以下为具体实例:

2.4、切片截取
可以通过设置下限及上限来设置截取切⽚ [lower-bound:upper-bound],实例如下:


2.5、append()函数和copy()函数
如果想增加切⽚的容量,我们必须创建⼀个新的更⼤的切⽚并把原分⽚的内容都拷⻉过来。
下⾯的代码描述了从拷⻉切⽚的 copy ⽅法和向切⽚追加新元素的 append ⽅法。


看变量地址


数组和切片的区别:

3、数组与切片
3.1 数组的容量和⻓度
数组的容量和⻓度是⼀样的。cap() 函数和 len() 函数均输出数组的容量(即⻓度)
3.2 类型
数组是 值类型 ,将⼀个数组赋值给另⼀个数组时,传递的是⼀份拷⻉。
切⽚是 引⽤类型 ,切⽚包装的数组称为该切⽚的底层数组。看下⾯的例⼦:
注意数组是⼀个固定⻓度的,初始化时候必须要指定⻓度,不指定⻓度的话就是切⽚了
3.3、隐藏数组
Go的切⽚是在数组之上的抽象数据类型,所以创建的切⽚始终都有⼀个数组存在。 举例说明:

[a b c d e] [c d] [a b c]
[a b 8 d e] [8 d] [a b 8]
数组与切⽚的赋值形式


从这个例⼦中可以看出,数组的赋值是值的拷⻉,是⼀个全新的数组。⽽切⽚的赋值是引⽤。下⾯再来看⼀个例⼦。

这个例⼦再⼀次说明:数组是赋值是copy,⽽切⽚仅是引⽤。例⼦1和例⼦2中的切⽚的声明⽤到了隐藏数组。再 来看下例⼦3,使⽤⾮隐藏数组的情况。



数组作为参数,被函数调⽤

切⽚被调⽤时,直接传递引⽤

边栏推荐
猜你喜欢
随机推荐
四氧化三铁/硫化铋纳米复合材料([email protected]@BSABiS纳米颗粒)|树状大分子稳定的硫化铋纳米颗粒|科研试剂
文件的随意读写
shell regular expressions
磁性核壳四氧化三铁颗粒负载金纳米星|磁性Fe3O4-POSS-COOH|超顺磁四氧化三铁聚多巴胺核壳结构纳米粒子
【mysql数据库】mysql数据库的使用
【零基础玩转BLDC系列】无刷直流电机闭环控制与软件架构
IDEA05:线程管理
2022-08-08:给定一个数组arr,表示从早到晚,依次会出现的导弹的高度。 大炮打导弹的时候,如果一旦大炮定了某个高度去打,那么这个大炮每次打的高度都必须下降一点。 1) 如果只有一个大炮,返回
phpstudy 安装 flarum论坛
一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持
具有CT造影功能的硫化铋纳米棒|硫化铋-锌原卟啉复合材料(PAMAM/Bi2S3复合纳米粒子)
一天学习一家上市公司:索菲亚
剑指offer专项突击版第24天
中断系统结构及中断控制详解
废品回收小程序、APP UNIAPP开发带有用户端和回收员端
数组 冒泡排序
kubernetes apparmor 简介
kubernetes 安全
51串口通信(上)
图解LeetCode——761. 特殊的二进制序列(难度:困难)







![[Deep Learning] Let's talk about what is convolutional neural network and what does convolution mean?](/img/12/c3258942e4dcc28714b57d5a3f725c.png)

