go语言中数组和切片的区别是什么?


本文摘自php中文网,作者青灯夜游,侵删。

区别:1、切片是指针类型,数组是值类型;2、数组的长度是固定的,而切片不是(切片可以看成动态的数组);3、切片比数组多一个容量(cap)属性;4、切片的底层是数组。

本文操作环境:Windows10系统、Go 1.11.2、thinkpad t480电脑。

相关推荐:《go教程》

以下代码输出什么?如果去掉注释又输出什么?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

package main

 

import (

   "fmt"

)

func main() {

   a := [2]int{5, 6}

   b := [2]int{5, 6}

   if a == b {

      fmt.Println("equal")

   } else {

      fmt.Println("not equal")

   }

   /*

      if a[:] == b[:] {

          fmt.Println("equal")

      } else {

          fmt.Println("not equal")

      }

   */

}

输出:

1

equal

去掉注释提示:

1

invalid operation: a[:] == b[:] (slice can only be compared to nil)

说明:

go语言中数组和切片的区别

● 切片是指针类型,数组是值类型

● 数组的长度是固定的,而切片不是(切片是动态的数组)

● 切片比数组多一个属性:容量(cap)

● 切片的底层是数组

所以,a、b定义的是数组类型,数组对比是相同的

但是,a[:]、b[:]是切片,切片之间不能进行等值判断,只能和nil判断

更多编程相关知识,请访问:编程教学!!

以上就是go语言中数组和切片的区别是什么?的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Go语言中的结构体与方法详解

Go语言适合做什么?

Go语言中while是关键字吗

Go语言如何实现string转换int

Go语言适合用在哪方面

Go语言怎么将string转int类型

Go语言有几种框架

Go语言指向指针的指针

Go语言怎么删除数组元素

Go语言中的接口怎么写

更多相关阅读请进入《Go语言》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...