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 main

import "fmt"

func main() {
    var score int
    score = 95
    fmt.Println("分数:", score) // 输出: 分数: 95

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

3.2 常量的使用

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

示例代码
package main

import "fmt"

func main() {
    const Pi = 3.14
    fmt.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大礼包。最后,祝您早日实现财务自由,还请给个赞,谢谢!
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【小白学机器学习19】统计基础:什么是定量分析,量化的4个层级,因果关系分类等

目录 1 定性分析和定量分析 1.1 两种分析方式 1.2 定性分析 1.3 定量分析 1.3.1 定义 1.3.2 名字 1.4 特点和差异 1.5 两者的关系 1.6 测量的评价:切实,可靠 1.7 关于统计分析 2 定量分析的三段式逻辑:个体 → 样本 → 总体 2.1 …

ArkUI自定义TabBar组件

在ArkUI中的Tabs,通过页签进行内容视图切换的容器组件,每个页签对应一个内容视图。其中内容是图TabContent作为Tabs的自组件,通过给TabContent设置tabBar属性来自定义导航栏样式。现在我们就根据UI设计的效果图来实现下图效果: 根…

react18中如何实现同步的setState来实现所见即所得的效果

在react项目中,实现添加列表项,最后一项自动显示在可视区域范围!! 实现效果 代码实现 import { useState, useRef } from "react"; import { flushSync } from "react-dom"; function FlushSyncRef() {con…

关于Pytest fixture,我们了解多少?

关于Pytest fixtures,根据官方文档介绍:fixture用于提供一个固定的基线,使 Cases 可以在此基础上可靠地、重复地执行。 对比 PyUnit 经典的setup/teardown形式,它在以下方面有了明显的改进: fixture拥有一个明确的名称…

Linux 之 fdisk 【磁盘分区管理】

删除分区 1.查看磁盘信息 lsblk 2.删除分区sdb硬盘下的所有分区 # 1 进入d的磁盘分区 fdisk /dev/sdb # 2 输入p查看磁盘的分区信息 # 3 输入d进入删除磁盘分区命令 # 4 选择要删除的分区号 重复3,4 全部删除 # 5 w 保存退出并生效操作信息 (输入q…

postman使用——在公司的项目落地回顾总结

背景 使用postman做接口自动化以及有差不多一年了,迭代更新了也差不多一年了,本篇文章主要介绍与总结: 为什么使用postman做自动化如何使用postman做接口自动化实际落地的方案实施postman优势与限制 为什么使用postman做接口自动化 有以下…

ORACLE在企业中的运用及岗位介绍

微思 | Oracle 19C OCP 认证培训 厦门面授班 | 全国直播班 同步上课 课程介绍:Oracle OCP 19C课程介绍 培训讲师—吴振兴 往期考试战报:【ORACLE战报】 OCP 认证 OCP :Oracle 数据库认证专家( Oracle Certified Professional…

【Linux系列】在 Linux 中使用 `watch` 命令监控 Docker 容器状态

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Linux】僵尸进程和孤儿进程

一、僵尸进程 何为僵尸进程? 在 Unix/Linux 系统中,正常情况下,子进程是通过父进程创建的,且两者的运行是相互独立的,父进程永远无法预测子进程到底什么时候结束。当一个进程调用 exit 命令结束自己的生命时&#xff…

FineReport 全局参数

全局参数与模板参数的区别如下: 1)全局参数:当前工程下的所有模板都可以使用。 2)模板参数:只有当前模板才可以使用 注:全局参数 area 并不是在当前模板下创建的,但是可以在模板中直接调用 全…

C++ 十进制数转换成7进制字符串

题目要求&#xff1a; 给定一个整数 num&#xff0c;将其转化为 7 进制&#xff0c;并以字符串形式输出。 C源码&#xff1a; #include "stdafx.h" #include <String> using namespace std;string convertToBase7(int num) {int tempNum num;char t;string…

WGCLOUD可以监控GPU吗

可以的 采集主机GPU信息功能&#xff0c;是WGCLOUD v3.5.5新增的一个功能模块&#xff0c;所以需要升级到v3.5.5或者以上版本 我们在主机管理的列表页面&#xff0c;点击【查看更多】->【扩展监控】按钮&#xff0c;就可以看到该主机的GPU信息 agent每间隔10分钟就会采集一…

DES对称加密算法

DES&#xff08;Data Encryption Standard&#xff0c;数据加密标准&#xff09;是一种对称加密算法。 算法概述 加密类型&#xff1a;对称加密&#xff08;同一密钥用于加密和解密&#xff09;。密钥长度&#xff1a;64位&#xff08;8字节&#xff09;&#xff0c;其中有效…

基于SSM网络在线考试系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;在线考试管理&#xff0c;试题管理&#xff0c;考试管理&#xff0c;系统管理 前台账号功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;在线考试&#xff0c;公告信…

最新物流行业CRM系统应用数字化解决方案

因势利导 ——全球化物流的挑战与机遇 在全球经济一体化与互联网技术快速发展的双重驱动下,物流行业正经历着前所未有的变革时期。这一变革不仅影响 着行业的发展模式,还对运营效率和客户体验提出了新的要求。 随着市场需求的不断演变,物流行业已呈现出多元化和专业 化并行的发…

OpenCV双目视觉三角测量代码实现C++

在双目视觉系统中&#xff0c;三角测量是一种基于几何原理的三维重建技术&#xff0c;通过分析同一场景在两个不同视角下的二维图像来确定物体的三维坐标。这种方法的核心在于利用摄像机的内参和相对位姿&#xff08;由旋转矩阵和平移向量描述&#xff09;&#xff0c;将图像中…

数据科学家必须掌握的12个Python功能

Python 已经成为数据科学家的必选语言&#xff0c;从数据处理到机器学习&#xff0c;它几乎无所不能。本文将探讨一些Python特性&#xff0c;这些特性不仅能帮助你编写更高效、更易读、更易维护的代码&#xff0c;还特别适合数据科学的需求&#xff0c;使你的代码简洁且优雅。 …

mysql8 使用idb文件实现数据备份

文章目录 1.备份脚本示例2.设置 Cron 任务3. 数据恢复 本文档只是为了留档方便以后工作运维&#xff0c;或者给同事分享文档内容比较简陋命令也不是特别全&#xff0c;不适合小白观看&#xff0c;如有不懂可以私信&#xff0c;上班期间都是在得 需求&#xff0c;在离线情况下实…

【Linux】————磁盘与文件系统

作者主页&#xff1a; 作者主页 本篇博客专栏&#xff1a;Linux 创作时间 &#xff1a;2024年10月17日 一、磁盘的物理结构 磁盘的物理结构如图所示&#xff1a; 其中具体的物理存储结构如下&#xff1a; 磁盘中存储的基本单位为扇区&#xff0c;一个扇区的大小一般为512字…

研发运营一体化(DevOps)能力成熟度模型

目录 应用设计 安全风险管理 技术运 持续交付 敏捷开发管理 基于微服务的端到端持续交付流水线案例 应用设计 安全风险管理 技术运 持续交付