main.go 2.0 KB

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