В примере веб-сервера 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
? Какая разница?
UPDATE: Спасибо, что указали, что :=
не разрешено на верхнем уровне. Любая идея, почему эта несогласованность находится в спецификации? Я не вижу причин, чтобы поведение отличалось внутри блока.