Hacker News
points by throwaway894345 3 days ago | 0 comments
How is this a broken default? In Go, I almost always want a nil slice to be treated exactly as an empty slice, and JSONv1 was the ~only place this didn’t work as expected, leading to frequent bugs.
[–] c-hendricks 2 days ago
JSON often means data is crossing a boundary, and JSON has `null`. So if you have a PATCH endpoint that accepts a partial object, how do you determine what was actually set in the request vs what go has initialized to an empty value.
[–] throwaway894345 2 days ago
Use the same `Option[T]` type that you will need to define for strings and numbers and structs.
[–] c-hendricks 2 days ago
What was the solution before go had generics? I thought it was nil pointers.
[–] throwaway894345 2 days ago
I don’t think there was a single canonical solution, but pointers to everything was a pretty common one. Everything in the AWS SDK was a `string` or a `float64` or similar—it was exceedingly annoying, not least of all because it basically forced tons of unnecessary allocations.