Hacker News new | past | comments | ask | show | jobs | submit login

The nil value for a slice is an empty slice that points to constant storage: Data=0, Len=0, Cap=0. That's just not the same as Data=somethingelse, ... which you get if you allocate something.

(And all Go zero values are exactly what you get with the relevant RAM filled with the zero byte.)




If the nil value for a slice is the empty slice, then why do the following two variable definitions differ in behavior?

  var x []int;
  y := []int{};
Both produce a slice of capacity zero, except `x` serializes to null and `y` serializes to an empty array.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: