var vs: = en Go

En el ejemplo del servidor web Go aquí:http://golang.org/doc/effective_go.html#web_server

La siguiente línea de código funciona

var addr = flag.String("addr", ":1718", "http service address")

pero cambiándolo a

addr := flag.String("addr", ":1718", "http service address")

Es un error de compilación. ¿Por qué? ¿Tiene algo que ver con la cara de que el tipo de retorno de la función es*string en lugar destring? ¿Qué diferencia hace eso?

ACTUALIZAR: Gracias por señalar que:= No está permitido en el nivel superior. ¿Alguna idea de por qué esta inconsistencia está en la especificación? No veo ninguna razón para que el comportamiento sea diferente dentro de un bloque.

Respuestas a la pregunta(3)

Su respuesta a la pregunta