Возможно переопределить идентификатор во внутреннем блоке. Программа выдает ошибку, если один и тот же идентификатор объявлен дважды в одном и том же блоке.
Рассмотрим этот пример для понимания области действия:
package main
import "fmt"
var v="global"
func main() {
v := v
fmt.Println(v)
//v := v
//Error: Same identifier 'v' declared again
{
v := "inner"
fmt.Println(v)
}
fmt.Println(v)
}
Вывод программы:
global
inner
global