跳转至

切片

切片的低层是数据,类型与 C++ 的 stl 容器,用起来会比较直接用原生的数据更加友好一些。 总的来说 go 语言中的切片,更像是其它语言中的动态数组。


根据数组创建切片

如果数组已经存在了,那我们可以直接在数组上创建切片。

package main

import "fmt"

func main() {
    var arr = [4]int{100, 200, 300, 400}

    // 基于数据创建切片
    var sli = arr[0:2]

    fmt.Printf("type of arr = %T, type of sli = %T \n", arr, sli)
}
运行效果
go run .
type of arr = [4]int, type of sli = []int


make 创建切片

如果低层的数据根本不存在,那么我们也可以直接用 make 来创建切片,这种情况下我们完全不用感知低层的数组。

package main

import "fmt"

func main() {
    // 初始为一个长度为 3 的切片
    var sli = make([]int, 3)
    fmt.Printf("type of sli = %T , cap = %d, len = %d \n", sli, cap(sli), len(sli))

    // 默认所有的元素值都是 0
    for _, value := range sli {
        fmt.Println(value)
    }
}
运行效果如下
go run .
type of sli = []int , cap = 3, len = 3 
0
0
0