func main() {
n := make([]int, 3, 5)
fmt.Printf("len=%d cap=%d value=%v\n", len(n), cap(n), n) //len=3 cap=5 value=[0 0 0]
n = append(n, 0, 0)
fmt.Printf("len=%d cap=%d value=%v\n", len(n), cap(n), n) //len=5 cap=5 value=[0 0 0 0 0]
n = append(n, 1, 2, 3, 4, 5)
fmt.Printf("len=%d cap=%d value=%v\n", len(n), cap(n), n) //len=11 cap=12 value=[0 0 0 0 0 1 2 3 4 5]
a := make([]int, 3) //引数1つだけとると長さとキャパシティが3
fmt.Printf("leng=%d cap=%d value=%v\n", len(a), cap(a), a) //leng=3 cap=3 value=[0 0 0]
b := make([]int, 0) //0のスライスをメモリに確保
var c []int //メモリ確保しないnil
fmt.Printf("len=%d cap=%d value=%v\n", len(b), cap(b), b) //len=0 cap=0 value=[]
fmt.Printf("len=%d cap=%d value=%v\n", len(c), cap(c), c) //len=0 cap=0 value=[]
c = make([]int, 5)
for i := 0; i < 5; i++ {
c = append(c, i)
fmt.Println(c)
}
fmt.Println(c)
//結果
// [0 0 0 0 0 0]
// [0 0 0 0 0 0 1]
// [0 0 0 0 0 0 1 2]
// [0 0 0 0 0 0 1 2 3]
// [0 0 0 0 0 0 1 2 3 4]
// [0 0 0 0 0 0 1 2 3 4]
c = make([]int, 0, 5)
for i := 0; i < 5; i++ {
c = append(c, i)
fmt.Println(c)
}
fmt.Println(c)
//結果
// [0]
// [0 1]
// [0 1 2]
// [0 1 2 3]
// [0 1 2 3 4]
// [0 1 2 3 4]
}