スライス[:]やcapの意味
スライスをスライスする場合に混乱しています。
「スライスは元の配列を参照するもの」
「lenは現在のスライスの長さ」
「capは元の配列の長さ」
という理解です。
以下の例でs1の場合、上記の理解通りcapは5のままです。
しかしs3でなぜcapが5ではなく4になるのでしょうか?
また、s2のスライスでは1~5まで表示されるのに、s3以降はなぜ表示されないのでしょうか?
[x:y] ←スライスのx部分とy部分でスライスの方法に違いがあるのでしょうか?
初心者なので分かりやすく教えてもらえると助かります。
該当のソースコード
go
1package main 2 3import "fmt" 4 5func main() { 6 s := []int{1, 2, 3, 4, 5} 7 check(s) // スライス=[1 2 3 4 5] len=5 cap=5 8 s1 := s[:4] 9 check(s1) // スライス=[1 2 3 4] len=4 cap=5 10 s2 := s1[:5] 11 check(s2) // スライス=[1 2 3 4 5] len=5 cap=5 12 s3 := s2[1:] 13 check(s3) // スライス=[2 3 4 5] len=4 cap=4 14 s4 := s3[:2] 15 check(s4) // スライス=[2 3] len=2 cap=4 16 s5 := s4[0:] 17 check(s5) // スライス=[2 3] len=2 cap=4 18} 19 20func check(v []int) { 21 fmt.Printf("スライス=%v len=%v cap=%v \n", v, len(v), cap(v)) 22}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/25 08:10