go语言中数组和切片的区别是什么?
16lz
2021-01-22
区别:1、切片是指针类型,数组是值类型;2、数组的长度是固定的,而切片不是(切片可以看成动态的数组);3、切片比数组多一个容量(cap)属性;4、切片的底层是数组。
本文操作环境:windows10系统、Go 1.11.2、thinkpad t480电脑。
相关推荐:《go教程》
以下代码输出什么?如果去掉注释又输出什么?
package mainimport ( "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") } */}
输出:
equal
去掉注释提示:
invalid operation: a[:] == b[:] (slice can only be compared to nil)
说明:
go语言中数组和切片的区别
● 切片是指针类型,数组是值类型
● 数组的长度是固定的,而切片不是(切片是动态的数组)
● 切片比数组多一个属性:容量(cap)
● 切片的底层是数组
所以,a、b定义的是数组类型,数组对比是相同的
但是,a[:]、b[:]是切片,切片之间不能进行等值判断,只能和nil判断
更多编程相关知识,请访问:编程教学!!
更多相关文章
- go语言如何实现字符串转数组
- go语言定义一个数组的方法有哪些
- go语言如何删除切片
- 数组的认识
- 一篇文章完全掌握 JavaScript 数组操作[每日前端夜话0x87]
- JavaScript算法题:查找数字在数组中的索引[每日前端夜话0x69]
- 学习C的第三天-数组
- 如何删除 JavaScript 数组中的虚值[每日前端夜话0x55]
- 怎样在JavaScript中创建和填充任意长度的数组 [每日前端夜话0x29