空配列を比較したい
https://play.golang.org/p/hpUyYKkkx9
a := []int{}
b := [...]int{}
c := []int(nil)
var d []int
上記の変数a
~d
はいずれも「要素数0のint型配列」を表していますが、reflect.DeepEqual
で比較してみると、すべてが同じ値というわけではないように見えました。
[]int
と[0]int
型が区別されるのは(SliceとArrayの違いなので)ぼんやりと理解できますが、そうすると同じ型のはずの[]int{}
と[]int(nil)
(a
とc
)が区別されるのが腑に落ちません。
これらの型はどう区別、比較すればいいのでしょうか?
例えば、配列を返す関数をテストしたい場合に、返り値が空配列となるケースをどのようにテストすればいいのか知りたいです。