• 技术文章 >后端开发 >Golang

    go语言如何判断变量是slice还是array

    藏色散人藏色散人2021-01-06 09:46:10原创750

    go语言判断变量是slice还是array的方法:1、判断变量长度在确定的情况下是否不可修改,若不可更改则表示该变量为array数组;2、在括号中定义一个长度值,带长度值是array数组,不带则是slice切片。

    本教程操作环境:Windows7系统、Go1.11.2版,Dell G3电脑。

    推荐:《go语言教程

    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的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:golang
    上一篇:两个Golang超大文件读取的方案 下一篇:国内哪些公司用go语言
    PHP编程就业班

    相关文章推荐

    • go语言int转string的方法• go语言如何求字符串长度• 如何解决go语言输出中文乱码的问题• go语言环境变量如何设置• go语言如何删除切片

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网