var vs: = in Go
В примере веб-сервера Go здесь:http://golang.org/doc/effective_go.html#web_server
Следующая строка кода работает
var addr = flag.String("addr", ":1718", "http service address")
но меняя его на
addr := flag.String("addr", ":1718", "http service address")
это ошибка компиляции. Зачем? Имеет ли это какое-либо отношение к лицу, которое возвращает тип функции*string
вместоstring
? Что это меняет?
ОБНОВИТЬ: Спасибо за указание на это:=
не допускается на верхнем уровне. Любая идея, почему это несоответствие в спецификации? Я не вижу причин, по которым поведение внутри блока может быть другим.