The program available on The Go Playground reads
package main import \"fmt\" func main() { var name string = nil fmt.Println(name) }
Because Golang string is a read-only slices of bytes.
string
However, a pointer to a string (*string) can be nil:
var s *string s = nil readonly := "readonly" s = &readonly dereference := *s
https://dhdersch.github.io/golang/2016/01/23/golang-when-to-use-string-pointers.html