首页/新闻资讯/正文详情

【Go语言基础【3】】变量、常量、值类型与引用类型

发布时间:2026/11/3 18:26:08 来源:云帆数科 栏目:资讯中心
【Go语言基础【3】】变量、常量、值类型与引用类型
文章目录一、值Value与字面量Literal1. 值2. 字面量二、变量Variable1. 声明方式2. 赋值方式3. 变量默认值4. 类型与值的匹配三、常量Constant1. 声明方式2. 常量的特性3. 枚举与 iota四、值类型与引用类型1. 值类型Value Type2. 引用类型Reference Type五、内存结构与变量赋值1. 进程内存结构2. 赋值操作的本质概念定义核心特点值数据的具体表示如10、hello。分为基础类型值和复合类型值通过字面量书写。变量命名的内存空间存储值或指针。强类型、可修改声明后有零值支持类型推断和简短声明:。常量编译时确定且不可修改的值用const声明。支持iota自动生成枚举值表达式在编译期计算可用于定义配置和枚举。值类型直接存储值赋值时复制数据如int、string、struct。栈中存储性能高变量独立。引用类型存储数据地址赋值时复制指针如slice、map、chan。堆中存储多个变量共享数据修改会相互影响。一、值Value与字面量Literal先看个例子varage18// 这里的 18 是字面量它代表的值是“年龄 18 岁”age19// 现在值变成了“年龄 19 岁”但写法还是字面量 19核心作用字面量是代码中 “写死” 的数据用于初始化变量或常量。值是程序运行时实际存储的数据可能会变化变量或固定不变常量。1. 值值是程序中数据的具体表示分为基础类型值如123整型、3.14浮点型、true布尔、a字符、hello字符串。复合类型值如数组[3]int{1,2,3}、切片[]string{a,b}、结构体struct{Name string}{Tom}。2. 字面量字面量是值的直接书写形式用于初始化变量或常量基础字面量42// 整型3.1415// 浮点型true// 布尔型中// 字符型runeGo语言// 字符串复合字面量构造复合类型的值如数组、切片、映射[3]int{1,2,3}// 数组[]string{a,b}// 切片map[string]int{a:1}// 映射二、变量Variable变量是存储值的内存空间的命名引用特点强类型语言变量必须先声明后使用且类型固定。值可修改运行时可重新赋值。1. 声明方式方式语法示例说明单个声明var name string声明变量name类型为string初始值为零值。批量声明var a, b int声明多个同类型变量。批量声明块形式var ( x int y string )适用于声明多个不同类型的变量代码更整洁。2. 赋值方式先声明后赋值varageint// 声明变量初始值为 0整型零值age18// 赋值声明并初始化varnamestringTom// 显式指定类型varscore95// 类型推断根据值 95 推断为 int简短声明仅用于函数内count:0// 等价于 var count int 0仅用于函数内部简洁高效。3. 变量默认值变量未显式赋值时自动赋予对应类型的零值数值类型如int、float320布尔类型boolfalse字符串string空字符串引用类型如切片、映射、通道nil4. 类型与值的匹配赋值时需保证类型一致否则编译报错varnumint100// 错误字符串无法赋值给整型三、常量Constant常量是编译时确定且运行时不可修改的值用于定义程序中固定不变的数据如配置项、枚举值。1. 声明方式方式语法示例说明显式类型声明const PI float64 3.14159明确指定类型和值。隐式类型推断const E 2.718类型由值自动推断float64。批量声明const ( br A 1 br B 2 br )声明多个常量可混合类型。2. 常量的特性不可修改声明后无法重新赋值否则编译报错consta10a20// 错误cannot assign to a (constant 10)编译期计算常量表达式在编译时求值支持算术运算、类型转换等const(KB1024MBKB*1024// 编译时计算为 1048576)3. 枚举与iotaiota是常量声明块中的自动递增计数器用于生成枚举值const(Sundayiota// 0iota 初始为 0Monday// 1iota 自增 1Tuesday// 2)其他语法跳过值用_跳过某个枚举值const(Aiota// 0_// 1跳过C// 2)复杂表达式结合运算符生成规律值如位掩码const(Read1iota// 1 0 10b0001Write// 1 1 20b0010Exec// 1 2 40b0100)四、值类型与引用类型1. 值类型Value Type存储方式直接存储值本身位于栈内存或堆内存中的数据区域。常见类型整型、浮点型、布尔型、字符型、字符串、数组、结构体非指针结构体。特点变量赋值时复制值修改一个变量不影响另一个a:10b:a// b 复制 a 的值10b20// a 仍为 10b 变为 202. 引用类型Reference Type存储方式存储值的内存地址指针指向堆内存中的数据。常见类型切片slice、映射map、通道chan、指针*T、接口interface。特点变量赋值时复制指针多个变量指向同一数据修改会互相影响slice1:[]int{1,2,3}slice2:slice1// slice2 与 slice1 指向同一底层数组slice2[0]100// slice1[0] 也变为 100因共享数据五、内存结构与变量赋值1. 进程内存结构栈Stack存放值类型变量和引用类型的指针特点是自动分配和释放速度快。堆Heap存放引用类型的数据如切片、映射的底层数据需手动管理Go 通过 GC 自动回收。2. 赋值操作的本质值类型赋值在栈中复制值新旧变量互不影响。varxint5varyintx// y 复制 x 的值5x 和 y 是独立的栈变量。引用类型赋值复制指针地址新旧变量指向堆中的同一数据。m:map[string]int{a:1}n:m// n 复制 m 的指针指向同一 map 数据。n[a]100// m[a] 也变为 100因共享数据。

相关推荐

【Go语言基础【17】】切片:一种动态数组
【Go语言基础【17】】切片:一种动态数组

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 18:26:08

eslav_PP-OCRv5_mobile_rec_onnx预处理流程详解:RecResizeImg与MultiLabelEncode技术
eslav_PP-OCRv5_mobile_rec_onnx预处理流程详解:RecResizeImg与MultiLabelEncode技术

eslav_PP-OCRv5_mobile_rec_onnx预处理流程详解:RecResizeImg与MultiLabelEncode技术 【免费下载链接】eslav_PP-OCRv5_mobile_rec_onnx 项目地址: https://ai.gitcode.com/paddlepaddle/eslav_PP-OCRv5_mobile_rec_onnx 飞桨PaddlePaddle的eslav_PP-OCRv5_… · 2026/11/3 18:26:08

Qwen3-Omni-30B-A3B-Instruct智能直播系统:多模态互动与内容分析平台
Qwen3-Omni-30B-A3B-Instruct智能直播系统:多模态互动与内容分析平台

Qwen3-Omni-30B-A3B-Instruct智能直播系统:多模态互动与内容分析平台 【免费下载链接】Qwen3-Omni-30B-A3B-Instruct Qwen3-Omni是多语言全模态模型,原生支持文本、图像、音视频输入,并实时生成语音。 项目地址: https://ai.gitcode.com/hf… · 2026/11/3 18:26:08

ESP32在线开发完全指南:不装环境也能玩转20+浏览器工具
ESP32在线开发完全指南:不装环境也能玩转20+浏览器工具

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 10:58:36

ESP32全栈桌面仪表盘Status Deck:从架构设计到数据链路打通
ESP32全栈桌面仪表盘Status Deck:从架构设计到数据链路打通

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 10:58:36

Windows下用WSL2构建ARM64 Debian包实战指南
Windows下用WSL2构建ARM64 Debian包实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 10:58:36

MQTT温控自动降温实战:从传感器到继电器的完整搭建指南
MQTT温控自动降温实战:从传感器到继电器的完整搭建指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 10:58:36

LabVIEW+FlexRIO实战:三个月搭建质谱分析信号采集系统
LabVIEW+FlexRIO实战:三个月搭建质谱分析信号采集系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 10:58:36

直流无刷电机AX BY CZ怎么划分?120°电角度与90°坐标系详解
直流无刷电机AX BY CZ怎么划分?120°电角度与90°坐标系详解

一个叫"ax"的热搜词,把我拽回了直流无刷电机的老本行。搜这个词的人,大概率是在某张接线图或绕线图上被AX、BY、CZ三个字母组合卡住了,随后抛出这个经典问题:直流无刷电机ax by cz怎么划分,是按照垂直轴线划… · 2026/11/4 10:57:33

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码