102 lines
2.6 KiB
Go
102 lines
2.6 KiB
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
var globalVar int = 100
|
|
|
|
func main() {
|
|
exercise1()
|
|
exercise2()
|
|
exercise3()
|
|
exercise4()
|
|
exercise5()
|
|
}
|
|
|
|
// 练习1:标准变量声明
|
|
// 目标:使用var关键字声明不同类型的变量并初始化
|
|
func exercise1() {
|
|
fmt.Println("=== 练习1:标准变量声明 ===")
|
|
|
|
// 声明一个string类型变量,命名为name,值为"张三"
|
|
var name string = "张三"
|
|
|
|
// 声明一个int类型变量,命名为age,值为25
|
|
var age int = 25
|
|
|
|
// 使用类型推断声明一个bool类型变量,命名为isStudent,值为true
|
|
var isStudent bool = true
|
|
|
|
fmt.Printf("姓名: %s, 年龄: %d, 是学生: %t\n", name, age, isStudent)
|
|
}
|
|
|
|
// 练习2:短变量声明
|
|
// 目标:使用:=进行变量声明(只能在函数内使用)
|
|
func exercise2() {
|
|
fmt.Println("\n=== 练习2:短变量声明 ===")
|
|
|
|
// 使用:=声明一个string变量,命名为city,值为"北京"
|
|
city := "北京"
|
|
|
|
// 使用:=声明一个float64变量,命名为price,值为99.5
|
|
price := 99.5
|
|
|
|
// 使用:=声明多个变量,x=10, y=20, z=30
|
|
x, y, z := 10, 20, 30
|
|
|
|
fmt.Printf("城市: %s, 价格: %.2f, 坐标: (%d, %d, %d)\n", city, price, x, y, z)
|
|
}
|
|
|
|
// 练习3:批量声明
|
|
// 目标:使用var()批量声明多个变量
|
|
func exercise3() {
|
|
fmt.Println("\n=== 练习3:批量声明 ===")
|
|
|
|
// 使用var()批量声明以下变量:
|
|
// username: string = "go_learner"
|
|
// email: string = "learner@example.com"
|
|
// level: int = 1
|
|
// experience: float64 = 0.0
|
|
var (
|
|
username string = "go_learner"
|
|
email string = "learner@example.com"
|
|
level int = 1
|
|
experience float64 = 0.0
|
|
)
|
|
|
|
fmt.Printf("用户: %s\n邮箱: %s\n等级: %d\n经验值: %.1f\n",
|
|
username, email, level, experience)
|
|
}
|
|
|
|
// 练习4:变量作用域
|
|
// 目标:理解全局变量和局部变量的作用域
|
|
func exercise4() {
|
|
fmt.Println("\n=== 练习4:变量作用域 ===")
|
|
|
|
// 直接打印全局变量globalVar的值
|
|
fmt.Printf("全局变量 globalVar 的值: %d\n", globalVar)
|
|
|
|
// 声明一个局部变量,命名为localVar,值为50
|
|
localVar := 50
|
|
|
|
fmt.Printf("局部变量 localVar 的值: %d\n", localVar)
|
|
}
|
|
|
|
// 练习5:作用域遮蔽
|
|
// 目标:理解内层代码块变量如何遮蔽外层变量
|
|
func exercise5() {
|
|
fmt.Println("\n=== 练习5:作用域遮蔽 ===")
|
|
|
|
// 外层变量
|
|
outer := "我是外层变量"
|
|
|
|
if true {
|
|
// 在if代码块内声明一个同名的变量,值为"我是内层变量"
|
|
// 这会遮蔽外层的outer变量
|
|
outer := "我是内层变量"
|
|
|
|
fmt.Printf("代码块内: %s\n", outer)
|
|
}
|
|
|
|
fmt.Printf("代码块外: %s\n", outer)
|
|
}
|