golang切片和数组的区别
本文内容纲要:
好久的没有写博客了,这段时间没事研究了下go这门语言。
我们先介绍下go中的数组和切片的区别和用法
说了这么多我们先来看段代码吧
vararr1[3]int
vararr2[3]int=[3]int{1,2,3}
fmt.Println(arr1)
fmt.Println(arr2)
我申明了两个数组,初始化和没初始化的
然后运行这段代码输出为[000][123]有没有发现和其他语言不一样的地方,细心的朋友应该已经发现了在go语言里默认为0值
D:/program/GoLang/hellogolang/src/b/b.exe[D:/program/GoLang/hellogolang/src/b]
[000]
[123]
成功:进程退出代码0.
然后我们再来看看切片,切片和数组很像。可以说是一种特殊数组
varslice[]int=[]int{3,6}
fmt.Println(slice)
slice=append(slice,1,2,3,5,8)
fmt.Println(slice)
这里声明了一个sliceint类型的数组切片切片的长度是可变的,我们可以通过append方法向里面添加同类型的值
运行代码控制台打印的和我们预想的完全一样
D:/program/GoLang/hellogolang/src/b/b.exe[D:/program/GoLang/hellogolang/src/b]
[36]
[3612358]
成功:进程退出代码0.
上面我们讲述了切片和数组的用法,现在来看看他们的区别
fmt.Println("数组***********************************")
vararr1[3]int=[3]int{1,2,3}
vararr2[3]int=arr1
fmt.Println(arr1,arr2)
arr2[0]=10002
fmt.Println(arr1,arr2)
fmt.Println("切片***********************************")
varslice1[]int=[]int{1,2,3}
varslice2[]int=slice1
fmt.Println(slice1,slice2)
slice2[0]=10002
fmt.Println(slice1,slice2)
输出结果如下可以看出数组是值拷贝而切片是引用
D:/program/GoLang/hellogolang/src/b/b.exe[D:/program/GoLang/hellogolang/src/b]
数组***********************************
[123][123]
[123][1000223]
切片***********************************
[123][123]
[1000223][1000223]
成功:进程退出代码0.
好了今天就写怎么多,喜欢的朋友帮忙点个赞
本文内容总结:
原文链接:https://www.cnblogs.com/blog-196/p/11141356.html