var s []int; fmt.Println(s == nil)?Неинициализированный слайс имеет zero value nil. Поэтому var s []int; fmt.Println(s == nil) выведет true. Nil-слайс ведёт себя как пустой: len(s) и cap(s) равны 0, append(s, 1) создаёт новый слайс. Важно: make([]int, 0) создаёт пустой слайс, который не равен nil (s != nil).
var s []int
fmt.Println(s == nil) // true
s = append(s, 1) // OK