重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关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”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。