| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package main
- import "fmt"
- func main() {
- // 1. 显式声明:var 变量名 类型 = 初始值。
- var name string = "小朱"
- var age int = 18
- var learning bool = true
- fmt.Println("=== 个人资料 ===")
- fmt.Printf("姓名:%s,年龄:%d,正在学习 Go:%t\n", name, age, learning)
- // 2. 类型推断:省略类型,由初始值推断。这里 city 的类型是 string。
- var city = "上海"
- fmt.Printf("城市:%s,类型:%T\n", city, city)
- // 3. 短变量声明 := 只能在函数内部使用。
- // 已经声明的变量,修改值时使用 =,而不是再次使用 :=。
- lesson := 2
- age = 19
- fmt.Printf("当前是第 %d 课,修改后的年龄:%d\n", lesson, age)
- // 同一作用域内,:= 左侧至少需要一个新变量。
- // age 已存在,但 score 是新变量,所以这一行可以编译。
- age, score := 20, 95
- fmt.Printf("再次修改后的年龄:%d,分数:%d\n", age, score)
- // 4. 常量:声明后不能重新赋值。
- const courseName = "Go 语言基础"
- fmt.Printf("课程:%s\n", courseName)
- // 5. 零值:变量没有显式初始化时,会自动获得对应类型的零值。
- var count int
- var price float64
- var message string
- var finished bool
- fmt.Println("\n=== 零值 ===")
- // %q 为字符串加上引号,方便看出空字符串。
- fmt.Printf("int:%d,float64:%.1f,string:%q,bool:%t\n", count, price, message, finished)
- // 6. 类型转换:int 和 float64 不能直接相乘,需要显式转换。
- quantity := 3
- unitPrice := 2.5
- total := float64(quantity) * unitPrice
- fmt.Println("\n=== 购物计算 ===")
- fmt.Printf("数量:%d,单价:%.2f,总价:%.2f\n", quantity, unitPrice, total)
- fmt.Printf("数量类型:%T,单价类型:%T,总价类型:%T\n", quantity, unitPrice, total)
- // 7. 浮点数转整数会向零截断,不会四舍五入,也不会修改原变量。
- whole := int(total)
- fmt.Printf("总价转为整数:%d,原总价仍为:%.2f\n", whole, total)
- }
|