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. }