There is a gotcha in golang (go figure!) resulting from the
difference between a nil slice and an empty slice. While the length
of both are 0, the JSON encoder will interpret the nil slice as
'null' and the empty slice as '[]'. Other libraries (i.e. ActiveRecord)
will return an empty array when no values are found. I have found
that this translates into better client-side code, since you don't
have to protect against null arrays.
See 'http://danott.co/posts/json-marshalling-empty-slices-to-empty-arrays-in-go.html'
for more information.
This commit adds more ways of specifying selects:
-) You can now pass in a []string. This is mostly for convenience,
since you may want to dynamically create a list of fields to be
selected.
-) You can now use variables. This is important because a select
could take user input. For example, finding a MAX between a record
and a given number could be easily done using select, and then
you don't have to process anything in backend logic. This is also
necessary to use postgres text search capabilities (which actaully
play nicely with the rest of gorm).
-) You can now chain select calls. This could be useful in
conjunction with gorm's scopes functionality.