Files
go-project-learning/01-basics/variables-demo/main.go
2025-12-31 17:58:51 +08:00

134 lines
3.0 KiB
Go

package main
import (
"fmt"
"strconv"
)
func main() {
fmt.Println("=== 变量声明示例 ===")
// 方式1: 标准声明 可以用于包级别声明
var name string = "张三"
var age int = 25
// 方式2: 类型推断 可以用于包级别声明
var city = "北京"
var score = 95.5
// 方式3: 短声明(最常用) 不能用于包级别声明
email := "test@example.com"
isActive := true
// 方式4: 批量声明
var (
username = "admin"
password = "123456"
port = 8080
)
fmt.Printf("姓名: %s, 年龄: %d, 城市: %s\n", name, age, city)
fmt.Printf("分数: %.2f, 邮箱: %s, 激活: %t\n", score, email, isActive)
fmt.Printf("用户: %s, 端口: %d\n", username, port)
_ = password // 避免未使用变量错误
fmt.Println("\n=== 数据类型示例 ===")
// 整数
var num int = 100
var byte1 uint8 = 255
// 浮点数
var pi float64 = 3.141592653589793
// 字符串
var greeting = "Hello, Go!"
multiline := `
这是多行字符串
保留格式
`
// 布尔值
var flag bool = true
fmt.Printf("整数: %d, 字节: %d\n", num, byte1)
fmt.Printf("浮点数: %f\n", pi)
fmt.Printf("字符串: %s\n", greeting)
fmt.Printf("多行: %s\n", multiline)
fmt.Printf("布尔: %t\n", flag)
fmt.Println("\n=== 常量示例 ===")
const PI = 3.14159
const AppName = "MyApp"
const (
StatusOK = 200
StatusNotFound = 404
StatusError = 500
)
const (
Monday = iota // 0
Tuesday // 1
Wednesday // 2
Thursday // 3
Friday // 4
)
fmt.Printf("常量 PI: %f, App: %s\n", PI, AppName)
fmt.Printf("状态码: %d, %d, %d\n", StatusOK, StatusNotFound, StatusError)
fmt.Printf("星期: %d, %d, %d\n", Monday, Tuesday, Wednesday)
fmt.Println("\n=== 类型转换示例 ===")
// 数值转换
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
fmt.Printf("int: %d -> float64: %f -> uint: %d\n", i, f, u)
// 字符串与数值转换
num2 := 123
str := strconv.Itoa(num2)
fmt.Printf("int to string: %s (类型: %T)\n", str, str)
str2 := "456"
num3, err := strconv.Atoi(str2)
if err != nil {
fmt.Println("转换失败:", err)
} else {
fmt.Printf("string to int: %d (类型: %T)\n", num3, num3)
}
fmt.Println("\n=== 运算符示例 ===")
a, b := 10, 3
fmt.Printf("%d + %d = %d\n", a, b, a+b)
fmt.Printf("%d - %d = %d\n", a, b, a-b)
fmt.Printf("%d * %d = %d\n", a, b, a*b)
fmt.Printf("%d / %d = %d\n", a, b, a/b)
fmt.Printf("%d %% %d = %d\n", a, b, a%b)
// 比较运算
fmt.Printf("%d == %d: %t\n", a, b, a == b)
fmt.Printf("%d > %d: %t\n", a, b, a > b)
// 逻辑运算
t, f2 := true, false
fmt.Printf("true && false: %t\n", t && f2)
fmt.Printf("true || false: %t\n", t || f2)
fmt.Printf("!true: %t\n", !t)
fmt.Println("\n=== 零值示例 ===")
var zeroInt int
var zeroFloat float64
var zeroBool bool
var zeroString string
fmt.Printf("int零值: %d, float零值: %f, bool零值: %t, string零值: '%s'\n",
zeroInt, zeroFloat, zeroBool, zeroString)
}