nil用法

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

  1. 不应明确返回长度为零的切片,应该返回nil 来代替。

     //bad uasge
     if x == "" {
         return []int{}
     }
    
     //good usage
     if x == "" {
         return nil
     }
  2. 要检查切片是否为空,请始终使用len(s) == 0,而非nil

     //bad uasge
     func isEmpty(s []string) bool {
         return s == nil
     }
    
     //good usage
     func isEmpty(s []string) bool {
         return len(s) == 0
     }
  3. 零值切片(用var声明的切片)可立即使用,无需调用make()创建。

     //bad uasge
     nums := []int{}
     // or, nums := make([]int)
    
     if add1 {
     nums = append(nums, 1)
     }
    
     if add2 {
     nums = append(nums, 2)
     }
    
     //good usage
     var nums []int
    
     if add1 {
     nums = append(nums, 1)
     }
    
     if add2 {
     nums = append(nums, 2)
     }

Last updated

Was this helpful?