go语言中切片与数组有哪些不一样的区别?
导读:在这篇文章中我们会学习到关于“go语言中切片与数组有哪些不一样的区别?”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。 区别:1、切片是...
在这篇文章中我们会学习到关于“go语言中切片与数组有哪些不一样的区别?”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。区别:1、切片是指针类型,数组是值类型;2、数组的长度是固定的,而切片不是(切片可以看成动态的数组);3、切片比数组多一个容量(cap)属性;4、切片的底层是数组。
本文操作环境:windows10系统、Go 1.11.2、thinkpad t480电脑。
以下代码输出什么?如果去掉注释又输出什么?
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") } */ }
输出:
equal
去掉注释提示:
invalid operation: a[:] == b[:] (slice can only be compared to nil)
说明:
go语言中数组和切片的区别
● 切片是指针类型,数组是值类型
● 数组的长度是固定的,而切片不是(切片是动态的数组)
● 切片比数组多一个属性:容量(cap)
● 切片的底层是数组
所以,a、b定义的是数组类型,数组对比是相同的
但是,a[:]、b[:]是切片,切片之间不能进行等值判断,只能和nil判断
现在大家对于go语言中切片与数组有哪些不一样的区别?的内容应该都清楚了吧,希望大家阅读完这篇文章能有所收获。最后,想要了解更多go语言中切片与数组有哪些不一样的区别?的知识,欢迎关注网络,网络将为大家推送更多相关知识点的文章。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: go语言中切片与数组有哪些不一样的区别?
本文地址: https://pptw.com/jishu/654026.html