Can't return nil, but zero value of slice
go
Solution
Nil is not a type. It is a description of the zero value for maps, chans, pointers, functions, slices, and interfaces.
When you put "nil" in your program, go gives it a type depending on the context. For the most part, you never need to explicitly type your nil. This is no exception, the compiler knows it must be a []string(nil) because the type returned is []string.
A nil string slice is a slice with no backing array and a length/capacity of zero. You may compare it to the literal "nil" and can get its length and capacity. It is a []string, just empty. If you wish to have an empty []string that is not nil, return []string{}. This creates a backing array (of length zero) and makes it no longer equivalent to nil.
Problem
I am having the case in which a function with the following code: ``` func halfMatch(text1, text2 string) []string { ... if (condition) { return nil // That's the final code path) } ... } ``` is returning `[]string(nil)` instead of nil. At first, I thought that perhaps returning `nil` in a function with a particular return type would just return an instance of a zero-value for that type. But then I tried a simple test and that is not the case. Does anybody know why would `nil` return an empty string slice?