Go语言变量定义指南:从入门到精通

📝 Go语言变量定义的基本方式

1. 标准定义方式

Go 复制代码
var name string = "张三"
var age int = 25
var score float64 = 98.5

这是最完整的变量定义形式,包含了var关键字、变量名、类型和初始值。

2. 类型推断定义

Go 复制代码
var name = "李四"  // 自动推断为string类型
var age = 30       // 自动推断为int类型
var height = 175.5 // 自动推断为float64类型

Go编译器会根据初始值自动推断变量类型,让代码更加简洁!

3. 短变量声明(最常用)

Go 复制代码
name := "王五"
age := 28
score := 99.9

这是在函数内部最常用的定义方式,简洁而强大!✨

🎯 多变量定义技巧

同行定义多个变量

Go 复制代码
var name, age, city = "赵六", 32, "北京"
// 或者使用短变量声明
name, age, city := "赵六", 32, "北京"

使用var块批量定义

Go 复制代码
var (
    name    string = "小明"
    age     int    = 18
    address string = "上海市"
    score   float64
)

💡 零值初始化

Go 复制代码
var (
    i int        // 0
    f float64    // 0.0
    b bool       // false
    s string     // ""
    p *int       // nil
)

⚠️ 变量定义注意事项

1. 短变量声明限制

短变量声明:=只能在函数内部使用:

Go 复制代码
// 错误!不能在包级别使用短变量声明
// name := "张三"

// 正确方式
var name = "张三"

2. 未使用变量

Go语言要求声明的变量必须被使用,否则编译会报错:

Go 复制代码
func main() {
    var a int = 10  // 编译错误:a declared but not used
    
    b := 20         // 编译错误:b declared but not used
    _ = b           // 使用空标识符避免错误
}

🚀 高级技巧

1. 匿名变量

Go 复制代码
// 使用下划线忽略不需要的值
_, err := someFunction()
value, _ := someFunction()

// 忽略循环中的索引
for _, item := range items {
    fmt.Println(item)
}

2. 变量作用域

Go 复制代码
var globalVar = "我是全局变量" // 包级作用域

func main() {
    localVar := "我是局部变量" // 函数级作用域
    
    if true {
        blockVar := "我是块级变量" // 块级作用域
        fmt.Println(blockVar)
    }
    // fmt.Println(blockVar) // 错误:在这里无法访问
}

🔥 实战示例

Go 复制代码
package main

import "fmt"

// 包级变量
var (
    appName    = "MyApp"
    version    = "1.0.0"
    buildTime  string
)

func main() {
    // 函数内部使用短声明
    userName := "admin"
    isLoggedIn := true
    
    // 多变量声明
    status, code := "success", 200
    
    // 使用匿名变量忽略不需要的值
    _, port := getServerConfig()
    
    fmt.Printf("应用: %s, 版本: %s\n", appName, version)
    fmt.Printf("用户: %s, 登录状态: %v\n", userName, isLoggedIn)
    fmt.Printf("状态: %s, 代码: %d\n", status, code)
    fmt.Printf("端口: %d\n", port)
}

func getServerConfig() (string, int) {
    return "localhost", 8080
}
相关推荐
golang学习记6 小时前
Go 语言中和类型(Sum Types)的创新实现方案
开发语言·golang
呆萌很7 小时前
Go语言输入输出操作指南
golang
Toormi1 天前
Go 1.26在性能方面做了哪些提升?
开发语言·后端·golang
桂花很香,旭很美2 天前
[7天实战入门Go语言后端] Go 后端实战踩坑与解法手册
服务器·网络·golang
桂花很香,旭很美2 天前
[7天实战入门Go语言后端] Go 后端实战技术点讲解
开发语言·golang·iphone
hansaes2 天前
golang 内存模型与分配机制
golang
石牌桥网管2 天前
golang Context介绍
开发语言·算法·golang
lisypro12 天前
gin-vue-admin项目使用命令行进行启动
前端·vue.js·golang·gin