Я прохожу учебник Go , и я достиг урока о ноль-срезах, где говорится:
Ноль-срез имеет длину и емкость 0 и имеетнет базового массива.
Чтобы показать это, они представляют этот код, который работает
package main
import "fmt"
func main() {
var s []int
fmt.Println(s, len(s), cap(s))
if s == nil {
fmt.Println("nil!")
}
}
Однако я попытался поэкспериментировать и заменил var s []int
на s := []int{}
. Консоль все еще печатает [] 0 0
, как в первом случае, но больше не строка nil!
. Так почему же первый nil
, а другой нет?