• nil是一个有效的slice
    • Bad
    • Good
    • Bad
    • Good
    • Bad
    • Good

    nil是一个有效的slice

    nil 是一个有效的长度为 0 的 slice,这意味着:

    • 不应明确返回长度为零的切片,而应该直接返回 nil 。

    Bad

    1. if x == "" {
    2. return []int{}
    3. }

    Good

    1. if x == "" {
    2. return nil
    3. }
    • 若要检查切片是否为空,始终使用 len(s) == 0 ,不要与 nil 比较来检查。

    Bad

    1. func isEmpty(s []string) bool {
    2. return s == nil
    3. }

    Good

    1. func isEmpty(s []string) bool {
    2. return len(s) == 0
    3. }
    • 零值切片(通过 var 声明的切片)可直接使用,无需调用 make 创建。

    Bad

    1. nums := []int{}
    2. // or, nums := make([]int)
    3. if add1 {
    4. nums = append(nums, 1)
    5. }
    6. if add2 {
    7. nums = append(nums, 2)
    8. }

    Good

    1. var nums []int
    2. if add1 {
    3. nums = append(nums, 1)
    4. }
    5. if add2 {
    6. nums = append(nums, 2)
    7. }