这篇文章将为大家详细讲解有关go语言怎样判断变量是slice还是array,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
go语言判断变量是slice还是array的方法:1、判断变量长度在确定的情况下是否不可修改,若不可更改则表示该变量为array数组;2、在括号中定义一个长度值,带长度值是array数组,不带则是slice切片。
golang中判断一个变量是array还是slice
Array和Slice两者的差异
两者最大的差异是数组长度一旦确定便不可修改,无法变长,无法改短。而切片则通过伸缩容量。且数组是值类型,把一个数组赋予给另一个数组时是发生值拷贝,而切片是指针类型,拷贝的是指针。
下面通过一个实例来说明:
代码如下图,(1)是定义一个[3]int类型数组,依次赋值为1,2,3。(2)将数组a赋值给b,将发生值拷贝。(3)给数组a的下标2的元素赋值为4,这并不会影响数组b的内容。(4)打印结果,得以说明情况。
在看另一段代码:(1)不指定长度,(2)打印结果,显示有对a的修改影响了b的内容。
为何一个细微的变化有如此差异呢?这个便是Array和Slice定义时语法上的细微差异:
在括号中定义一个长度值,是编译器区别变量a数据类型的唯一依据,带长度值便是数组,不带便是切片。
再回到题主的疑问,下面变量如何区分:
var a1 []int ---> 无长度定义,是Slice
var a2 [2]int ---> 有长度定义,是Array
var a3 [3]*int---> 有长度定义,是Array
var a4 [4][3]int ---> 有长度定义,是Array,只不过是一个二维数组。
关于“go语言怎样判断变量是slice还是array”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。