15分钟学Go 第6天:变量与常量

第6天:变量与常量

在Go语言中,变量和常量是编程的基础概念。理解如何定义和使用它们不仅能帮助我们管理数据,还能增强代码的可读性和可维护性。在本章中,我们将详细探讨Go语言中的变量和常量,涵盖它们的定义、使用、作用域和注意事项,帮助你全面掌握这一重要主题。

1. 什么是变量?

变量是用来存储数据的一个命名空间,其值可以在程序运行时改变。变量的命名必须遵循一定的规则,通常应该具有描述性,以反映其存储的值。

1.1 变量的定义

在Go语言中,变量可以通过var关键字定义,也可以使用短变量声明:=表示法。

1.1.1 使用var关键字定义变量
var name string = "Alice"
var age int = 30
1.1.2 使用短变量声明定义变量
name := "Bob"
age := 25

1.2 变量的类型

Go是强类型语言,变量的类型必须在定义时指定。可以定义基本数据类型、复合数据类型等。

类型示例描述
intvar a int = 10整数类型
float64var b float64 = 3.14浮点数类型
boolvar c bool = true布尔类型
stringvar d string = "hello"字符串类型

2. 什么是常量?

常量是一个固定的值,定义后无法改变。常量用于存储那些不需在程序运行时改变的值,如数学常数和配置信息。

2.1 常量的定义

同样,常量也可以通过const关键字定义。

示例代码
const Pi = 3.14
const Greeting = "Hello, World!"

2.2 常量的组定义

Go还支持常量的分组定义,便于管理。

const (Day   = 24 * 60 * 60  // 一天的秒数Month = 30 * Day       // 一月的秒数
)

3. 变量与常量的使用

3.1 变量的使用

在Go语言中,变量在定义后可以被重新赋值。示例如下:

示例代码
package mainimport "fmt"func main() {var score intscore = 95fmt.Println("分数:", score) // 输出: 分数: 95score = 100fmt.Println("更新后的分数:", score) // 输出: 更新后的分数: 100
}
代码执行流程
开始
声明变量score
赋值score为95
打印score
更新score为100
打印更新后的score
结束

3.2 常量的使用

常量在定义之后不可更改,尝试修改将导致编译错误。

示例代码
package mainimport "fmt"func main() {const Pi = 3.14fmt.Println("圆周率:", Pi) // 输出: 圆周率: 3.14// Pi = 3.14159 // 会导致编译错误
}
代码执行流程
开始
声明常量Pi
打印常量Pi
结束

4. 变量的作用域

变量的作用域决定了变量在程序中可见的范围。

4.1 局部变量与全局变量

  • 局部变量:在函数内部定义的变量,只能在该函数内访问。
  • 全局变量:在函数外部定义的变量,可以被任何函数访问。
var globalVariable = "I am global"func main() {var localVariable = "I am local"fmt.Println(globalVariable) // 可以访问fmt.Println(localVariable)   // 可以访问
}func anotherFunction() {fmt.Println(globalVariable) // 可以访问// fmt.Println(localVariable) // 编译错误:localVariable未定义
}

4.2 变量生命周期

  • 局部变量:在定义后,其生命周期在函数调用期间有效,函数结束时变量被销毁。
  • 全局变量:从程序启动到结束其生命周期有效。

5. 变量和常量的最佳实践

5.1 变量命名规则

  • 使用有意义且描述性的名称。
  • 避免使用单个字母或者难以理解的名称。

5.2 常量的意义

  • 使用常量来表示不变的值,避免硬编码。
  • 常量的命名习惯通常使用大写字母,便于辨识。

5.3 使用短变量声明

  • 在函数内部,尽量使用短变量声明:=,提高代码的简洁性。

6. 练习题与挑战

  1. 编写一个程序,接受用户输入的名字和年龄并打印出来。
  2. 定义一个常量表示一年的秒数,并编写程序计算指定数量的年对应的总秒数。
  3. 创建一个程序定义一个全局变量和一个局部变量,并分别在全局和局部访问它们。

7. 关于使用变量和常量时的注意事项

7.1 类型推断

在短变量声明中,Go会根据右侧的值推断变量类型。

x := 5            // x为int类型
y := "Hello"      // y为string类型

7.2 不使用变量

如果声明的变量未被使用,编译器将抛出错误。这是Go语言鼓励良好编程习惯的一部分。

var unused int = 10 // 编译错误: unused is declared but not used

7.3 多个变量的定义

可以在一行中定义多个变量,但要注意可读性。

var a, b, c int = 1, 2, 3

8. 总结

在本章中,我们深入探讨了Go语言的变量与常量,包括它们的定义、使用、作用域和最佳实践。通过代码示例和执行流程,我们掌握了如何有效地利用变量和常量,提高了代码的可读性和维护性。

附加资源

  • Go语言官方文档 - 变量和常量
  • Go语言学习资源与书籍

如果你在学习过程中有任何疑问,欢迎随时提问。希望这个章节能帮助你更好地掌握Go语言的基础知识,为接下来的学习打下坚实的基础!


怎么样今天的内容还满意吗?再次感谢观众老爷的观看,关注下方GZH,回复666,送您价值199的AI大礼包。最后,祝您早日实现财务自由,还请给个赞,谢谢!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/452983.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Xshell] Xshell的下载安装使用及连接linux过程 详解(附下载链接)

前言 Xshell.zip 链接:https://pan.quark.cn/s/5d9d1836fafc 提取码:SPn7 安装 下载后解压得到文件 安装路径不要有中文 打开文件 注意!360等软件会拦截创建注册表的行为,需要全部允许、同意。或者退出360以后再安装。 在“绿化…

spdlog学习记录

spdlog Loggers:是 Spdlog 最基本的组件,负责记录日志消息。在 Spdlog 中,一个 Logger 对象代表着一个日志记录器,应用程序可以使用 Logger 对象记录不同级别的日志消息Sinks:决定了日志消息的输出位置。在 Spdlog 中&…

程序员节的故事:在代码的海洋中遨游

#1024程序员节 | 征文# 一年一度的程序员节又来了,作为一名热爱编程的开发者,我总是期待着这个特殊的日子。10月24日,不仅是程序员们的节日,更是我们分享故事、交流技术的时刻。今年的1024征文活动让我感到无比兴奋,因…

Axure重要元件三——中继器修改数据

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:中继器修改数据 主要内容:显示编辑内容、表格赋值、修改数据 应用场景:更新行、表单数据行修改 案例展示: 正文…

STM32L031F6P6基于CubeMX的串口通信调试笔记

用CubeMX创建项目 本实例用的PA14、PA13两个引脚,LPUART1。 对串口参数进行设置: 开启串口中断: 时钟源设置成内部高频时钟: 对项目进行设置: 生成代码: 在串口初始化函数中加入 __HAL_UART_ENA…

C++11 thread,mutex,condition_variable,atomic,原子操作CAS,智能指针线程安全,单例模式最简单实现方式

1.thread 在c11中,c标准委员会开发出了thread库;接下来我们先来看看这个库的使用吧; 1.1 thread类接口介绍 1.1.1 thread类构造函数 我们thread库中的thread类的构造函数可以通过直接传递回调函数与函数的参数来构造线程: int…

THP4 SOP16 芯片 高速光耦芯片

光电耦合器输入端加电信号使发光源发光,光的强度取决于激励电流的大小,此光照射到封装在一起的受光器上后,因光电效应而产生了光电流,由受光器输出端引出,这样就实现了电一光一电的转换。 由于光耦合器输入输出间互相…

mysql主从复制及故障修复

一、主MySQL数据库的配置 分别在三台主机(chen2/10.110、chen3/10.120、chen4/10.130)中安装mysql数据,其中chen2/10.110作为主MySQL服务器,其余两台作为从MySQL服务器。 1、在主机上部署mysql数据库 详细的请看上一篇:mysql数据…

2021年江西省职业院校技能大赛(高职组) “云计算应用”赛项样题

2021年江西省职业院校技能大赛(高职组) “云计算应用”赛项样题 【任务 1】基础运维任务[5 分]【题目 1】基础环境配置【题目 2】镜像挂载【题目 3】Yum 源配置【题目 4】时间同步配置【题目 5】计算节点分区 【任务 2】OpenStack 搭建任务[15 分]【题目…

现今 CSS3 最强二维布局系统 Grid 网格布局

深入学习 CSS3 目前最强大的布局系统 Grid 网格布局 Grid 网格布局的基本认识 Grid 网格布局: Grid 布局是一个基于网格的二位布局系统,是目前 CSS 最强的布局系统,它可以同时对列和行进行处理(它将网页划分成一个个网格,可以任…

日本HarmonicDrive哈默纳科减速机SHF系列在半导体中的应用

半导体行业作为现代工业的核心领域之一,其技术的不断进步对于推动全球经济和科技创新起着至关重要的作用。而在半导体制造的复杂过程中,各种先进的设备和技术相互配合。日本 HarmonicDrive 哈默纳科减速机 SHF 系列具有优异的定位精度和旋转精度&#xf…

ES6扩展运算符

1.介绍: ... 扩展运算符能将数组转换为逗号分隔的参数序列; 扩展运算符(spread)也是三个点(...)。它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的 参数序列,对数组进…

2024年最值得关注的5款数据可视化工具

在信息爆炸的时代,数据可视化工具扮演着至关重要的角色。它们帮助我们从海量数据中提取有价值的信息,并将这些信息以直观、易于理解的方式展现出来。无论是企业决策者、数据分析师还是普通用户,都能通过数据可视化工具更有效地分析和理解数据…

ESP32移植Openharmony外设篇(1)MQ-2烟雾传感器

外设篇 实验箱介绍 旗舰版实验箱由2部分组成:鸿蒙外设模块(支持同时8个工作)、鸿蒙平板。 其中,鸿蒙平板默认采用RK3566方案。 OpenHarmony外设模块采用底板传感器拓展板方式,底板默认采用ESP32方案,也…

【Linux】【Jenkins】后端maven项目打包教程-Linux版

本次安装版本:2.4 jenkins详细安装教程1、安装git环境2、安装mavne环境2.1 下载依赖2.2、解压、赋权2.2、配置环境变量2.3、验证安装 3、jenkins-插件下载3.1、进入jenkins-->系统管理3.2、进入系统管理-->插件管理3.3、下载两个插件(如果之前下载…

【JVM神秘大门】Java虚拟机原理的保姆式教学,零基础速成精英之路(上篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

智慧园区的未来:三维可视化系统建设策略

园区三维可视化系统是指利用先进的数字技术和虚拟现实技术,对园区内部空间、设施、资源等进行实时模拟、展示和管理的系统。该系统可以帮助园区管理者更好地了解园区整体布局、资源分配情况,优化空间规划、设施管理,提高园区运营效率和服务水…

江恩理论(Gann Theory)

威廉江恩 威廉江恩(William D.Gann),1878年出生于美国德州,二十世纪最著名的投资家。在股票市场上的骄人成绩无人可比。 江恩理论 江恩理论是一种通过数学、几何学、宗教和天文学的综合运用,来分析和预测市场走势的投…

探索 Python 中的 XML 转换利器:xml2dict

文章目录 **探索 Python 中的 XML 转换利器:xml2dict**一、背景介绍二、xml2dict 是什么?三、如何安装 xml2dict?四、基本用法五、实际应用场景六、常见问题及解决方案七、总结 探索 Python 中的 XML 转换利器:xml2dict 一、背景…

【Unity精品插件】Magica Cloth:Unity布料模拟的新高度

📂 Unity 开发资源汇总 | 插件 | 模型 | 源码 💓 欢迎访问 Unity 打怪升级大本营 在Unity游戏开发中,物理模拟是使角色和场景更加生动和真实的重要工具之一。Magica Cloth 是一个专为物理效果设计的插件,它提供了轻量级、高性能的…