nil 是一个有效的 slice
发布者:admin 发表于:444天前 阅读数:527 评论:0

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

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

Bad Good

if x == "" { return []int{} } |

if x == "" { return nil } |

要检查切片是否为空,请始终使用len(s) == 0。而非 nil

Bad Good

func isEmpty(s []string) bool { return s == nil } |

func isEmpty(s []string) bool { return len(s) == 0 } |

零值切片(用var声明的切片)可立即使用,无需调用make()创建。

Bad Good

nums := []int{} // or, nums := make([]int)

if add1 { nums = append(nums, 1) }

if add2 { nums = append(nums, 2) } |

var nums []int

if add1 { nums = append(nums, 1) }

if add2 { nums = append(nums, 2) } |

记住,虽然nil切片是有效的切片,但它不等于长度为0的切片(一个为nil,另一个不是),并且在不同的情况下(例如序列化),这两个切片的处理方式可能不同。