切片

  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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章