golang 切片簡單運用

kenuo發表於2018-05-11
package main

import "fmt"

func main() {
    arr := [...] int{0,1,2,3,4,5,6,7,8,9}

    fmt.Println(arr[2:6])  //2 , 3, 4, 5
    fmt.Println(arr[:6]) // 0, 1,2,3,4,5

    s1 := arr[2:]
    fmt.Println(s1) //2,3,4,5,6,7,8,9

    s2 := arr[:]
    fmt.Println(s2) // 0,1,2,3,4,5,6,7,8,9
}

公式總結:

切割長度 = 結束索引 - 開始索引

以上就是簡單 golang 切片運用了. 和python 差不多 , 只不過 Python 都是按照下標切割的.

package main

import "fmt"

func updateSlice(arr []int)  {
    arr[0] = 100
}

func main() {
    // Slice 學習.

    arr := [...]int{0,1,2,3,4,5,6,7,8,9}

    fmt.Println(arr[2:6])  //2 , 3, 4, 5
    fmt.Println(arr[:6]) // 0, 1,2,3,4,5

    s1 := arr[2:]
    fmt.Println(s1) //2,3,4,5,6,7,8,9

    s2 := arr[:]
    fmt.Println(s2) // 0,1,2,3,4,5,6,7,8,9

    updateSlice(s1)
    fmt.Println(s1)  // 100,3,4,5,6,7,8,9
    fmt.Println(arr)

    updateSlice(s2)

    fmt.Println(s2) // 100,1,100,3,4,5,6,7,8,9
    fmt.Println(arr) // 100,1,100,3,4,5,6,7,8,9

    arr1 := []int{0,1,2,3,4,5,6,7}

    s := arr1[2:6]
    s[0] = 10
    fmt.Println(arr1) // 0,1,10,2,3,4,5,6,7

    /*
        Slice 本身沒有資料,是對底層array的一個view
        arr 的值變為[0,1,10,2,3,4,5,6,7]
     */
}

總結:

Slice 本身沒有資料,是對底層array的一個view

by JeffreyBool blog :point_right: link

相關文章