Go 中的变量作用域和阴影:综合指南
在 Go 中,理解变量作用域和阴影对于编写干净且可维护的代码至关重要。变量作用域定义了程序中变量的可见性,而遮蔽是指在嵌套作用域中重新声明同名变量。
Go 中的变量作用域
Go 使用词法作用域,这意味着变量的作用域由其在代码中的位置决定。有五个不同的范围级别:
- 宇宙块:预声明的标识符(例如,true、false)
- 包块:在顶层声明的标识符
- 文件块:包名
- 函数体:方法接收者、函数参数和结果变量
- 块作用域:块内声明的常量、变量和类型
Go 中的变量阴影
当变量发生阴影时内部作用域中的变量与外部作用域中的变量使用相同的名称进行声明。在这种情况下,内部作用域中的变量优先并遮蔽外部变量。
变量作用域和遮蔽的优点
- 数据完整性: 外部作用域中的数据不会被内部作用域中的变量意外访问或修改
- 有限范围:变量的作用域可以限定在特定的代码块,从而降低程序其他部分产生副作用的风险。
不同形式的变量阴影
在Go中,变量阴影可以通过多种方式实现方式:
-
在语句内使用简写赋值:
for i := 'a'; i
-
使用 {.. .}对:
{ i := "hi" //new local var }
-
使用函数调用:
func fun(i int) { i++ //use as local var without side effect }
-
遮蔽全局变量:
var i int = 1 //global func main() { i := 10 //Shadowing global var }
代码示例和示例
变量范围:
package main func main() { i := 10 //scope: main fmt.Println(i) //output: 10 }
在此示例中,i 是在 main 函数中声明的,并且只能访问
变量遮蔽:
package main func shadow() { x := 10 //shadowing global variable x fmt.Println(x) //output: 10 } var x int = 1 //global variable func main() { fmt.Println(x) //output: 1 shadow() }
在此示例中,全局变量 x 被遮蔽函数中的局部变量 x 遮蔽。因此,当在影子函数内部访问 x 时,它引用值为 10 的局部变量。
以上是变量作用域和阴影在 Go 中如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文解释了GO的软件包导入机制:命名imports(例如导入“ fmt”)和空白导入(例如导入_ fmt; fmt;)。 命名导入使包装内容可访问,而空白导入仅执行t

本文解释了Beego的NewFlash()函数,用于Web应用程序中的页间数据传输。 它专注于使用newflash()在控制器之间显示临时消息(成功,错误,警告),并利用会话机制。 Lima

本文详细介绍了MySQL查询结果的有效转换为GO结构切片。 它强调使用数据库/SQL的扫描方法来最佳性能,避免手动解析。 使用DB标签和Robus的结构现场映射的最佳实践

本文演示了创建模拟和存根进行单元测试。 它强调使用接口,提供模拟实现的示例,并讨论最佳实践,例如保持模拟集中并使用断言库。 文章

本文探讨了GO的仿制药自定义类型约束。 它详细介绍了界面如何定义通用功能的最低类型要求,从而改善了类型的安全性和代码可重复使用性。 本文还讨论了局限性和最佳实践

本文详细介绍了在GO中详细介绍有效的文件,将OS.WriteFile(适用于小文件)与OS.openfile和缓冲写入(最佳大型文件)进行比较。 它强调了使用延迟并检查特定错误的可靠错误处理。

本文使用跟踪工具探讨了GO应用程序执行流。 它讨论了手册和自动仪器技术,比较诸如Jaeger,Zipkin和Opentelemetry之类的工具,并突出显示有效的数据可视化


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1
好用且免费的代码编辑器

Atom编辑器mac版下载
最流行的的开源编辑器