Goでのmake関数を用いてスライスを作成して容量を確認した時の挙動がどういうこと!
Q&A
解決したいこと
make関数でスライスを作成して、appendで要素を追加した時のcapメソッドで容量を確認すると要素数と異なり、挙動の仕方がどのようになっているのかお伺いしたいです。
発生している問題・エラー
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] 15 16
該当するソースコード
s4 := make([]int, 0, 3)
s4 = append(s4, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
fmt.Println(s4, len(s4), cap(s4))
自分で試したこと
変数s4を定義してmake関数でスライスを初期化しました。その後に、append
メソッドで要素を数値で1~15まで追加しました。そして、最後に要素数と容量をコンソールに出力しました。自身の予測だと要素数と同じ数、容量になるのかなと思ったのですが、要素数+1になってしまいます。その要因が調べても理解できないので、この部分でいい参考記事等ありましたら教示いただけたら幸いです。イラストや図解のある、参考だと助かります。