Go语言:切片的使用及注意事项

1、切片定义后实际上是空值不能直接使用,需要让其引用到一个数组或者make一个空间供切片来使用;

2、切片的使用不可以越界,像数组一样,切片的下标索引不能超过切片实际的最大下标值;

package main
import "fmt"
func main(){
    // 定义一个数组
    var intarr [6]int = [6]int{1,4,7,2,5,8}
    // 定义一个切片(从第1位开始到第4位开始为止,实际上就是数组的第1/2/3位索引对应的值组成的切片)
    var slice []int = intarr[1:4]
    fmt.Println(slice[0])
    fmt.Println(slice[1])
    fmt.Println(slice[2])
    fmt.Println(slice[3])  // 这里获取切片的下标索引3会报错,因为该切片只有3位,最大索引值为2:panic: runtime error: index out of range [3] with length 3
}
3、可以对切片继续进行切片;
  // 对切片再次进行切片
    var slice2 = slice[1:2]
    fmt.Println(slice2)
 
4、切片可以动态增加
package main
import "fmt"
func main(){
    // 定义数组
    var intarr [6]int = [6]int{1,4,7,3,6,9}
    // 定义切片
    var slice []int = intarr[1:4]
    fmt.Println(len(slice))
 
    // 切片追加元素,返回给一个新的切片
    slice2 := append(slice,88,99)
    // 1)底层追加元素的时候,实际上是对数组进行扩容,老数组扩容为新数组
    // 2)创建一个新数组,将老数组中的4,7,3复制到新数组中,在新数组中追加元素88和99
    // 3)slice2的底层数据的指向,实际上是指向的是那个新数组
    fmt.Println(slice2)
    fmt.Println(slice)
    // 4)往往我们在使用appen追加元素的时候,实际想要的效果是给切片slice上追加;
    slice = append(slice,88,99)
    // 5)底层的新数组,不能直接维护和操作,需要通过切片来间接维护
}
 
5、可以通过append函数,将切片追加给切片
    slice3 := []int{44,55}
    slice = append(slice,slice3...)  // 后面的三个点不可以省略,表面追加的是一个切片
 
posted @ 2024-05-13 17:44  勇敢-的心  阅读(15)  评论(0编辑  收藏  举报