空slice和nil slice的区别?
空slice和nil slice的区别在哪里?
空slice与nil slice的声明
var a []string
fmt.Println(a == nil) // trueb := []string{}
fmt.Println(b == nil) // false
c := make([]string, 0)
fmt.Println(c == nil) // false使用上的相同
使用上的不同
var a []string // a == nil
aj, _ := json.Marshal(&A{Data: a})
fmt.Printf("%s\n", string(aj)) // {"Data":null}
b := []string{} // b != nil
bj, _ := json.Marshal(&A{Data: b})
fmt.Printf("%s\n", string(bj)) // {"Data":[]}底层实现的差异


Reference
Last updated