go变量与常量

阿里云教程3个月前发布
17 0 0

核心概念+声明方式+类型详解

一、变量:存储可变数据的容器

核心特点

变量的值在程序运行过程中可修改,需指定数据类型(或通过编译器自动推导),Go语言是静态类型语言,变量类型一旦确定不可变更。

4种声明方式(实战常用前3种)

① 显式声明(最规范):格式「var 变量名 数据类型 = 初始值」,类型与值需匹配。

示例:

var name string = "Go开发者" // 字符串类型变量name,初始值为"Go开发者" 
var age int = 25 // 整型变量age,初始值为25 
var isStudy bool = true // 布尔型变量isStudy,初始值为true

② 类型推导(最常用):格式「var 变量名 = 初始值」,编译器根据初始值自动判断类型,简洁高效。

示例:

var height = 1.75 // 编译器推导为float64类型(浮点型) 
var city = "北京" // 编译器推导为string类型 

③ 短变量声明(局部变量专用):格式「变量名 := 初始值」,只能在函数内部使用,不能在包级声明,是Go语言局部变量的首选方式。

示例(需在main函数内):

func main() { 
    score := 95.5 // 局部变量score,推导为float64类型 
    count := 100 // 局部变量count,推导为int类型 
} 

④ 批量声明:用var关键字批量定义多个变量,减少重复代码,支持显式类型或类型推导。

示例:

// 显式类型批量声明 
var ( id int = 1001 addr string = "上海市" ) 
// 类型推导批量声明 
var ( weight = 65.0 isMale = true ) 

3. 常用基础类型

① 整型(int)

存储整数,分 有符号(
int8/int16/int32/int64/int)和无符号(uint8/uint16等),日常开发用int(随系统位数自动适配,64位系统为int64,32位为int32)。

示例:

var num int = 1000 // 通用整型 
var num32 int32 = 2147483647 // 32位有符号整型,最大值固定 

② 字符串(string)

存储文本,用双引号””或反引号“包裹(反引号支持多行文本),不可修改单个字符(需通过切片转换后修改)。

示例:

var msg1 string = "Hello Go" // 单行字符串 
var msg2 string = `这是 多行 字符串` // 多行字符串,保留换行格式 

③ 布尔型(bool)

仅存true(真)或false(假),无其他取值,常用于条件判断。

示例:

var isSuccess bool = true 
var hasError bool = false 

④ 浮点型(float32/float64)

存储小数,float64精度更高(默认推导类型),日常开发优先用float64。

示例:

var pi float64 = 3.1415926 // 高精度浮点型 
var price float32 = 19.9 // 单精度浮点型 

二、常量:存储不可变数据的标识

核心特点

值在声明后不可修改,编译期确定值,支持自动类型推导,常用于存储固定值(如数学常量、配置固定参数)。

2种声明方式

① 基本声明

格式「const 常量名 类型 = 值」,类型可省略(自动推导)。

示例:

const PI float64 = 3.1415926 // 显式类型常量

const MAX_AGE = 120 // 类型推导常量,int类型

const APP_NAME = “Windows工具” // 字符串常量

② 批量声明

与变量批量声明类似,适合定义一组相关常量。

示例:

const ( VERSION = "v1.0.0" AUTHOR = "Go学习者" PORT = 8080 ) 

特殊用法:iota常量生成器 用于生成连续的整数常量,简化批量定义连续值的场景(如枚举),每新增一行iota值自增1。

示例:

const ( Monday = iota // Monday=0 Tuesday // Tuesday=1(自动继承iota,自增1) Wednesday // Wednesday=2 Thursday // Thursday=3 ) 

三、实战注意事项

1. 变量未赋值时会有默认零值(int为0,string为空串””,bool为false,float64为0.0);

2. 短变量声明不能重复声明同一变量,但可同时声明多个变量(如a, b := 1, 2);

3. 常量值必须是编译期可确定的(如不能用函数返回值给常量赋值);

4. 日常开发优先选择:局部变量用短变量声明(:=),包级变量用var类型推导,固定值用常量。

© 版权声明

相关文章

暂无评论

none
暂无评论...