LoginSignup
0
0

More than 3 years have passed since last update.

スライス

Last updated at Posted at 2019-06-06

スライス

func main() {
    n := []int{1, 2, 3, 4, 5, 6}
    fmt.Println(n)      //[1 2 3 4 5 6]
    fmt.Println(n[2])   //3
    fmt.Println(n[2:4]) //[3 4]
    fmt.Println(n[2:])  //[3 4 5 6]
    fmt.Println(n[:2])  //[1 2]
    fmt.Println(n[2:3]) //[3]
    fmt.Println(n[:])   //[1 2 3 4 5 6]

    n[2] = 1234
    fmt.Println(n) //[1 2 1234 4 5 6]

    //入れ子構造(スライスの中にスライス)
    var board = [][]int{
        []int{0, 1, 2},
        []int{3, 4, 5},
        []int{6, 7, 8},
    }
    fmt.Println(board) //[[0 1 2] [3 4 5] [6 7 8]]

    n = append(n, 100, 200, 300, 400)
    fmt.Println(n) //[1 2 1234 4 5 6 100 200 300 400]
}

スライスのmakeとcap

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]
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0