Golang的变量常量初始化

变量初始化

变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念;

变量可以通过变量名来表示;

变量名包括数字,字母,下划线组成,其中第一个字符不能为数字;

在 Go 语言中变量和常量都要先声明;

使用 var来声明变量的变量名和值

例如:

go 复制代码
package main

func main() {
    // 声明变量(未初始化,使用零值)
    var name string   // 默认 ""
    var age int       // 默认 0
    var score float64 // 默认 0.0
    var isPass bool   // 默认 false
    
    // 声明并初始化
    var name2 string = "张三"
    var age2 int = 18
    
    // 类型推断(省略类型)
    var name3 = "李四"
    var age3 = 20
}
短变量声明

使用:=的方法可以进行短变量声明,编译器自动进行类型推断

例如:

go 复制代码
func main() {
    name := "王五"     // 等价于 var name string = "王五"
    age := 25
    score := 95.5
    
    // 多个变量同时声明
    x, y := 10, 20
    a, b := "hello", true
}
批量声明

使用 var 关键字配合圆括号可以批量声明多个变量

例如:

go 复制代码
func main() {
    var (
        name   string        
        age    int           
        city   string = "北京"
        height float64 = 175.5
    )
    
    // 短变量声明也可以批量声明
    username, password := "admin", "123456"
}
注意事项
  • 变量必须先声明再使用

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

  • 局部变量声明后必须被使用,否则编译报错

  • 全局变量可以不使用(不会报错)

  • 变量名不能与关键字冲突

常量初始化

常量来源于数学,是计算机语言中表示固定值、不可改变的抽象概念;

常量可以通过常量名来表示;

常量名包括数字,字母,下划线组成,其中第一个字符不能为数字;

在 Go 语言中变量和常量都要先声明;

常量一旦声明就不能被修改;

使用 const 来声明常量的常量名和值

例如:

go 复制代码
package main

func main() {
    // 声明常量(必须初始化)
    const name string = "张三"
    const age int = 18
    const score float64 = 95.5
    const isPass bool = true
    
    // 类型推断(省略类型)
    const name2 = "李四"
    const age2 = 20
    const score2 = 88.5
}
批量声明

使用 const 关键字配合圆括号可以批量声明多个常量

例如:

go 复制代码
func main() {
    const (
        name   string = "王五"
        age    int    = 25
        city   string = "北京"
        height float64 = 175.5
    )
    
    // 类型推断批量声明
    const (
        username = "admin"
        password = "123456"
        maxCount = 100
    )
}
iota 常量生成器

iota 是 Go 语言中预定义的一个特殊常量生成器,用于生成一组以相似规则初始化的常量

例如:

go 复制代码
func main() {
    const (
        a = iota  // 0
        b = iota  // 1
        c = iota  // 2
    )
    
    // 简写形式(省略后续的 iota)
    const (
        d = iota  // 0
        e         // 1
        f         // 2
    )
    
    // 使用 iota 定义枚举
    const (
        Sunday = iota     // 0
        Monday            // 1
        Tuesday           // 2
        Wednesday         // 3
        Thursday          // 4
        Friday            // 5
        Saturday          // 6
    )
}
注意事项
  • 常量必须初始化,不能只声明不赋值

  • 常量一旦声明,值不能被修改

  • 常量不能使用 := 短变量声明语法

  • 常量可以使用 iota 生成器自动递增

  • 常量可以是未使用的(不会报编译错误)

  • 常量名通常使用大写字母或驼峰命名法

  • 常量只能修饰布尔、数字(整数、浮点数、复数)和字符串类型

相关推荐
旖旎夜光28 分钟前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
揽星河..1 小时前
【C语言】结构体
c语言·开发语言
孟陬1 小时前
Foobar 技术周刊#159:当看不懂代码时,如何高效排障调试。脏页陷阱:一条只读查询,写入数 TB 数据。推测解码:大模型加速利器
前端·人工智能·后端
GoGeekBaird1 小时前
别再给每个 AI 做自我介绍了:我做了一个「个人上下文」管理系统
后端·github·agent
2601_966949651 小时前
如何封装 qd.klines.batch(),让批量 K 线查询函数在多个策略中复用?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
码事漫谈1 小时前
腾讯混元 Hy4 正式版发布了
后端
Mikko71 小时前
Redis 连接数满了服务端有错误信息吗?连接数不增加却命令超时?6.2 实测连接池、超时与大 key 怎么判定
java·spring boot·redis·后端
神仙别闹2 小时前
基于Python实现英词语自动对齐系统
开发语言·python
akinggw2 小时前
libagentcore - 一个基于c++的AI多agent系统升级到2.0版本
开发语言·jvm·c++
苍何2 小时前
DeepSeek的Super-agent 设计,和我们的工程实践
后端