golang切片和数组的区别

第一次使用CSDN发布博客,写的不好还请见谅

这段时间没事研究了下go这门语言。
golang切片和数组的区别

我们先介绍下go中的数组和切片的区别和用法

说了这么多 我们先来看段代码吧

var arr1 [3]int
var arr2 [3]int = [3]int{1, 2, 3}
fmt.Println(arr1)
fmt.Println(arr2)

我申明了两个数组,初始化和没初始化的

然后运行这段代码输出为[0 0 0] [1 2 3] 有没有发现和其他语言不一样的地方,细心的朋友应该已经发现了 在go语言里默认为0值

D:/program/GoLang/hello golang/src/b/b.exe  [D:/program/GoLang/hello golang/src/b]
[0 0 0]
[1 2 3]

成功: 进程退出代码 0.

然后我们再来看看切片,切片和数组很像。可以说是一种特殊数组

var slice []int = []int{3, 6}
fmt.Println(slice)
slice = append(slice, 1, 2, 3, 5, 8)
fmt.Println(slice)

这里声明了一个slice int类型的数组切片 切片的长度是可变的,我们可以通过append方法向里面添加同类型的值

运行代码控制台 打印的和我们预想的完全一样

D:/program/GoLang/hello golang/src/b/b.exe  [D:/program/GoLang/hello golang/src/b]
[3 6]
[3 6 1 2 3 5 8]

成功: 进程退出代码 0.
 上面我们讲述了切片和数组的用法,现在来看看他们的区别

fmt.Println("数组***********************************")
var arr1 [3]int = [3]int{1, 2, 3}
var arr2 [3]int = arr1
fmt.Println(arr1, arr2)
arr2[0] = 10002
fmt.Println(arr1, arr2)
 
fmt.Println("切片***********************************")
var slice1 []int = []int{1, 2, 3}
var slice2 []int = slice1
fmt.Println(slice1, slice2)
slice2[0] = 10002
fmt.Println(slice1, slice2)

输出结果如下 可以看出数组是值拷贝而切片是引用

D:/program/GoLang/hello golang/src/b/b.exe  [D:/program/GoLang/hello golang/src/b]
数组***********************************
[1 2 3] [1 2 3]
[1 2 3] [10002 2 3]
切片***********************************
[1 2 3] [1 2 3]
[10002 2 3] [10002 2 3]

成功: 进程退出代码 0.
好了今天就写怎么多,喜欢的朋友帮忙点个赞

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值