切片不支持比较的原因:
- 切片元素是间接引用的,一个切片甚至可以包含自身(当slice声明为[]interface{}时,slice的元素可以是自身)
- 因为slice元素是间接引用的,一个固定的slice值(指slice本身的值,不是元素的值)在不同时刻可能包含不同元素,因为底层数组的元素可能会被修改。
零值的slice等于nil。
nil值的slice没有底层数组
nil值的slice的长度和容量都是0。但是也有非nil值的slice的长度和容量为0的,如[]int{}、make([]int, 3)[3:]。可以用[]int(nil)类型转换表达式来生成一个对应类型的slice的nil值。复制代码
- var s []int // len(s) == 0, s == nil
- s = nil // len(s) == 0, s == nil
- s = []int(nil) // len(s) == 0, s == nil
- s = []int{} // len(s) == 0, s != nil
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |