Nil Slice

1
2
3
4
5
6
7
8
var nilSlice []int

fmt.Println(nilSlice) // 输出:[]
fmt.Println(len(nilSlice), cap(nilSlice)) // 输出:0 0
fmt.Println(nilSlice == nil) // 输出:true

res, _ := json.Marshal(nilSlice)
fmt.Println(string(res)) // 输出:null

Empty Slice

  • 代码一:
    1
    2
    3
    4
    5
    6
    7
    8
    emptySlice := make([]int, 0)

    fmt.Println(emptySlice) // 输出:[]
    fmt.Println(len(emptySlice), cap(emptySlice)) // 输出:0 0
    fmt.Println(emptySlice == nil) // 输出:false

    res, _ := json.Marshal(emptySlice)
    fmt.Println(string(res)) // 输出:[]
  • 代码二:
    1
    2
    3
    4
    5
    6
    7
    8
    emptySlice := []int{}

    fmt.Println(emptySlice) // 输出:[]
    fmt.Println(len(emptySlice), cap(emptySlice)) // 输出:0 0
    fmt.Println(emptySlice == nil) // 输出:false

    res, _ := json.Marshal(emptySlice)
    fmt.Println(string(res)) // 输出:[]

注意:emptySlice := []int{} 这种定义方式,在 Goland 中会出现Empty slice declaration using a literal的警告⚠️