go语言学习--数组、切片、map初始化操作和区别

Go语言中,数组是一种具有相同类型固定大小的一种数据结构,数组定义会定义长度

数组的声明语法如下

var 数组变量名 [元素数量]Type
a:= [3]int{}

//我们可以通过如下方式给数组赋值

a[0] = 1

a[1] = 2

a[2] = 3

//数组遍历

for i, v := range a {
fmt.Printf("%d %d\n", i, v)
}

//数组比较

如果两个数组类型相同(包括数组的长度,数组中元素的类型)的情况下,我们可以直接
过较运算符(
==!=)来判断两个数组是否相等,只有当两个数组的所有元素都是相等的时候数组才是相等的,不能比较两个类型不同的数组,否则程序将无法完成编译。

一.在Go中,数组属于基本类型,他们之间的赋值,传递是属于值拷贝,同样的,如果将数组作为参数在函数间传递,也是属于值拷贝
例子:

Array1:=[3] int{}

Array2:=[2] int{1,2}

Array3:=[2] int{4,5}

Array3[0]=6

fmt.Println(Array1, Array2, Array3)

结果:0,0,0;4,5;6,5

二.只有长度相同和类型相同的才能赋值

q := [3]int{1, 2, 3}

q = [4]int{1, 2, 3, 4} // 编译错误:无法将 [4]int 赋给 [3]int

三.数组的长度是固定的,没办法动态增加数组的长度。而切片却没有这个限制,实际上在 Go 中,切片比数组更为常见。

切片

切片(slice)是建立在数组之上的更方便,更灵活,更强大的数据结构。切片并不存储任何元素而只是对现有数组的引用。

创建切片

一:元素类型为 T 的切片表示为: []T。通过数组创建一个切片

    a := [5]int{ 76, 77, 78, 79, 80}

    var b []int = a[1:4] //creates a slice from a[1] to a[3]

    fmt.Println(b)

通过 a[start:end] 这样的语法创建了一个从 a[start] 到 a[end -1] 的切片。在上面的程序中,第 9 行 a[1:4] 创建了一个从 a[1] 到 a[3] 的切片。因此 b 的值为:[77 78 79]。

二:创建切片的另一种方式:

    c := []int{ 6, 7, 8} //creates and array and returns a s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值