Локальное имя в Go
Имя, объявленное внутри функции, снаружи этой
функции не видно. Короткое объявление и
обычное объявление с var в теле функции
создают локальную переменную только для этого
блока функции. Другая функция в том же файле
не может обратиться к такому имени.
Внутри функции имя работает как обычно:
package main
import "fmt"
func showLabel() {
label := "local"
fmt.Println(label)
}
func main() {
showLabel()
}
На экране "local". Переменная label
живет только внутри showLabel.
Если попытаться вывести то же имя из main,
сборка не пройдет:
package main
import "fmt"
func showLabel() {
label := "local"
fmt.Println(label)
}
func main() {
fmt.Println(label)
}
То же правило для имени после внутреннего блока в одной функции: объявили внутри скобок, снаружи скобок имя пропадает.
if true {
inner := 4
fmt.Println(inner)
}
fmt.Println(inner)
Дан следующий код:
package main
import "fmt"
func save() {
code := 7
fmt.Println(code)
}
func main() {
save()
fmt.Println(code)
}
Скажите, соберется ли программа.
Скажите, в какой функции видно имя из короткого объявления внутри другой функции того же файла.
Дан фрагмент:
{
step := 1
}
fmt.Println(step)
Скажите, соберется ли программа.