package main

import "fmt"

var (
	// main 包里面的变量
	age = 18
)

func main() {
	var a = "parent"
	fmt.Println("outer:", a) // parent
	{
		a = "child"              // 子作用域声明了同名新变量（遮蔽外层 a）
		fmt.Println("inner:", a) // child
	}
	fmt.Println("outer again:", a) // 仍为 child

	// 局部变量
	var b = "parent"
	fmt.Println("outer:", b) // parent
	{
		// var b = "child"
		// 新的局部变量b
		b := "child"             // 子作用域声明了同名新变量（遮蔽外层 a）
		fmt.Println("inner:", b) // child
	}
	fmt.Println("outer again:", b) // 仍为 parent

	fmt.Println(age)
}
