切片

  1. 切片:切片是數組的一個引用,因此切片是引用類型
  2. 切片的長度可以改變,因此,切片是一個可變的數組
  3. 切片遍歷方式和數組一樣,可以用len()求長度
  4. cap可以求出slice最大的容量,0 <= len(slice) <= (array),其中array是slice引用的數組
  5. 切片的定義:var 變量名 []類型,比如 var str []string var arr []int

  6. 切片初始化:var slice []int = arr[start:end]
    包含start到end之間的元素,但不包含end
  7. Var slice []int = arr[0:end]可以簡寫爲 var slice []int=arr[:end]
  8. Var slice []int = arr[start:len(arr)] 可以簡寫爲 var slice[]int = arr[start:]
  9. Var slice []int = arr[0, len(arr)] 可以簡寫爲 var slice[]int = arr[:]
  10. 如果要切片最後一個元素去掉,可以這麼寫:
    Slice = slice[:len(slice)-1]
    創建切片的方式:
    var slice []type = make([]type, len)
    slice  := make([]type, len)
    slice  := make([]type, len, cap)

    從數組中截取出切片:

    var a = [5]int{1,2,3,4,5}
    fmt.Println(a)
    //切片引用傳值
    var b = a[1:]
    fmt.Println(b)
    b[0] = 666
    fmt.Println(a)
    fmt.Println(b)

    輸出:
    [1 2 3 4 5]
    [2 3 4 5]
    [1 666 3 4 5]
    [666 3 4 5]


用append內置函數操作切片:

slice = append(slice, 10)
var a = []int{1,2,3}
var b = []int{4,5,6}
a = append(a, b…)

For range 遍歷切片:

for index, val := range slice {
}

切片resize:

var a = []int {1,3,4,5}
b := a[1:2]
b = b[0:3]

切片拷貝:

s1 := []int{1,2,3,4,5}
s2 := make([]int, 10)
copy(s2, s1)
s3 := []int{1,2,3}
s3 = append(s3, s2…)
s3 = append(s3, 4,5,6)

string與slice,string底層就是一個byte的數組,因此,也可以進行切片操作:

str := “hello world”
s1 := str[0:5]
fmt.Println(s1)

s2 := str[5:]
fmt.Println(s2)

如何改變string中的字符值?string本身是不可變的,因此要改變string中字符,需要如下操作:

str := “hello world”
s := []byte(str)
s[0] = ‘o’
str = string(s)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章