Go语言里简短声明语句词法域问题

news/2024/11/22 16:28:52/

Go语言里简短声明语句词法域问题

简短变量声明语句只有对已经在同级词法域声明过的变量才和赋值操作语句等价,如果变量是在外部词法域声明的,那么简短变量声明语句将会在当前词法域重新声明一个新的变量。

第一个程序

在第一个程序中,for循环内部的a := 1是一个新的变量声明,它只在for循环的块作用域内有效。这个新的局部变量a遮蔽(shadows)了外层的全局变量a。因此,最后打印a的值仍是5.

package mainimport "fmt"func main() {a := 5fmt.Println(a)for i := 1; i < 3; i++ {a := 1fmt.Println(a)}fmt.Println(a)
}

在这里插入图片描述

开始
声明并初始化a为5
打印a的值
进入for循环
声明新的局部变量a为1
打印局部变量a的值
循环结束
打印全局变量a的值
结束

第二个程序

在这个程序中,for循环内部没有使用:=,这意味着a = 1是在修改外层作用域中的全局变量a。因此,在循环内部打印的是全局变量a的值,即1。由于全局变量a被修改了,所以循环结束后最后打印的也是1。

package mainimport "fmt"func main() {a := 5fmt.Println(a)for i := 1; i < 3; i++ {a = 1fmt.Println(a)}fmt.Println(a)
}

在这里插入图片描述

开始
声明并初始化a为5
打印a的值
进入for循环
修改全局变量a为1
打印全局变量a的值
循环结束
打印全局变量a的值
结束

http://www.ppmy.cn/news/1549080.html

相关文章

用java和redis实现考试成绩排行榜

一、引言 在各类考试场景中&#xff0c;无论是学校里的学业测试&#xff0c;还是线上培训课程的考核&#xff0c;亦或是各类竞赛的选拔&#xff0c;成绩排行榜都是大家颇为关注的一个元素。它不仅能直观地展示考生之间的成绩差异&#xff0c;激发大家的竞争意识&#xff0c;还能…

AWTK-WIDGET-WEB-VIEW 实现笔记 (2) - Windows

在 Windows 平台上的实现&#xff0c;相对比较顺利&#xff0c;将一个窗口嵌入到另外一个窗口是比较容易的事情。 1. 创建窗口 这里有点需要注意&#xff1a; 父窗口的大小变化时&#xff0c;子窗口也要跟着变化&#xff0c;否则 webview 显示不出来。创建时窗口的大小先设置…

【星海随笔】分布式管理Zookeeper

高可用集群 地址&#xff1a;https://archive.apache.org/dist/zookeeper TPS既每秒系统吞吐量 QPS即每秒查询率 Zookeeper的选举机制 确保所有节点对外表现为一个统一的服务。 选举机制分为两个阶段&#xff1a;Leader选举和投票确认 Zookeeper 的选举机制确保集群中的所有节…

前端开发调试之移动端调试学习笔记

一、引言 随着移动互联网的飞速发展&#xff0c;移动端页面和应用的开发变得越发重要。而在前端开发移动端项目时&#xff0c;有效的调试手段能帮助我们及时发现并解决诸多问题&#xff0c;确保项目在移动端设备上能够正常运行且提供良好的用户体验。以下就是关于前端开发中移动…

springboot第83集:理解SaaS多租户应用的架构和设计,设备介入,网关设备,安全,实时实现,序列化...

springboot第83集&#xff1a;理解SaaS多租户应用的架构和设计&#xff0c;设备介入&#xff0c;网关设备&#xff0c;安全&#xff0c;实时实现&#xff0c;序列化&#xff0c;数据交换&#xff0c;存储与查询&#xff0c;流处理&#xff0c;消息队列 [什么是多租户] 聊到PaaS…

快速掌握企业开发之Git基础操作及安装

目录 1. Git概念2. 安装git2.1 centos环境2.2 ubuntu环境 3. Git基本操作(基于ubuntu环境)3.1 创建本地仓库3.2 配置本地仓库1. 针对单个仓库2. 针对一台电脑下所有仓库 3.3 认识工作区&#xff0c;暂存区及版本库3.4 添加文件底层原理剖析 3.5 修改文件3.6 版本回退3.7 撤销修…

Cmake 编译QT4工程 Linux下 Cmake 编译Qt5

open Object 按钮不好使 可能是没有选择默认打开方式 寻找qt库路径 需要再跟节点的CMAKELIST 下编写 find_package(Qt4 REQUIRED QtCore QtGui QtXml) 错误总结 报错 无法打开 ui_xxx.h 寻找ui_xxx.h 文件 也需要再根节点下编写 如果在具体项目文件夹下编写 也会找到不到…

【JavaSE】【多线程】定时器

目录 一、定时器简介1.1 Timer类1.2 使用案例 二、实现简易定时器2.1 MyTimerTask类2.2 实现schedule方法2.3 构造方法2.4 总代码2.5 测试 一、定时器简介 定时器&#xff1a;就相当于一个闹钟&#xff0c;当我们定的时间到了&#xff0c;那么就执行一些逻辑。 1.1 Timer类 …