go语言中数组使用的注意事项和细节1、数组是多个 相同类型 的数据的组合,一个数组一旦声明/定义了,其 长度是固定的 , 不能动态变化。
2、var arr []int这时arr就是一个slice 切片。
3、数组中的元素可以是任何数据类型 , 包括值类型和引用类型 , 但是 不能混用。
4、数组创建后,如果没有赋值,有默认值如下:
数值类型数组:默认值为 0
字符串数组:默认值为 ""
bool数组:默认值为 false
5、使用数组的步骤:
(1)声明数组并开辟空间
(3)给数组各个元素赋值
(3)使用数组
6、数组的下标是从0开始的 。
7、数组下标必须在指定范围内使用,否则报panic:数组越界,比如var arr [5]int的有效下标为0~4.
8、Go的数组属于 值类型,在默认情况下是 值传递 , 因此会进行值拷贝 。数组间不会相互影响 。
9、如想在其他函数中去修改原来的数组 , 可以使用 引用传递 (指针方式) 。
10、长度是数组类型的一部分,在传递函数参数时,需要考虑数组的长度,看以下案例:
题1:编译错误,因为不能把[3]int类型传递给[]int类型,前者是数组,后者是切片;
题2:编译错误,因为不能把[3]int类型传递给[4]int类型;
题3:编译正确,因为[3]int类型传给[3]int类型合法 。
go的数组和切片初始化数组
数组是内置(build-in)类型,是一组同类型数据的集合 。
数组的初始化有多种形式
长度为5的数组,其元素值依次为:1 , 2,3 , 4,5
长度为5的数组,其元素值依次为:1,2 , 0,0,0。在初始化时没有指定初值的元素将会赋值为其元素类型int的默认值0,string的默认值是 ""
长度为5的数组,其长度是根据初始化时指定的元素个数决定的
长度为5的数组,key:value,其元素值依次为:0,0,1,2,3 。在初始化时指定了2,3,4索引中对应的值:1,2 , 3
长度为5的数组,起元素值依次为:0,0,1 , 0,3 。由于指定了最大索引4对应的值3,根据初始化的元素个数确定其长度为5
切片
数组的长度不可改变 , 在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型 Slices 切片 。
切片可以通过数组来初始化,也可以通过内置函数make()初始化 。初始化时len=cap,在追加元素时如果容量cap不足时将按len的 2 倍扩容 。
直接初始化切片,[] 表示是切片类型,{1,2,3} 初始化值依次是1,2,3.其cap=len=3
初始化切片s,是数组arr的引用
将arr中从下标startIndex到endIndex-1 下的元素 创建为一个新的切片
缺省endIndex时将表示一直到arr的最后一个元素
缺省startIndex时将表示从arr的第一个元素开始
通过切片s初始化切片s1
通过内置函数make()初始化切片s,[]int 标识为其元素类型为int的切片
go语言数组,切片和字典的区别和联系、数组
与其他大多数语言类似go语言数组与切片的区别,Go语言的数组也是一个元素类型相同的定长的序列 。
(1)数组的创建 。
数组有3种创建方式:[length]Type 、[N]Type{value1, value2, ... , valueN}、[...]Type{value1, value2, ... , valueN} 如下:
复制代码代码如下:
func test5() {
var iarray1 [5]int32
var iarray2 [5]int32 = [5]int32{1, 2, 3, 4, 5}
iarray3 := [5]int32{1, 2, 3, 4, 5}
iarray4 := [5]int32{6, 7, 8, 9, 10}
iarray5 := [...]int32{11, 12, 13, 14, 15}
iarray6 := [4][4]int32{{1}, {1, 2}, {1, 2, 3}}
fmt.Println(iarray1)
推荐阅读
- jquery产品,jquery示例
- 关于SAP视察的信息
- 为什么gis需要网络功能,arcgis需要网络吗
- 好用的手机版射击游戏软件,手机版射击游戏哪个好玩
- php数据按月份显示出来 php数据按月份显示出来的数据
- flutter怎么退出浏览器,flutter 打开浏览器
- 游戏开发指导系统教程,游戏开发教程视频
- 保安经营公司游戏叫什么,保安的游戏
- php表单注册存入数据库 php表单显示数据库内容