iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >go语言变量的作用域是什么
  • 167
分享到

go语言变量的作用域是什么

2023-07-05 00:07:31 167人浏览 安东尼
摘要

这篇“Go语言变量的作用域是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言变量的作用域是什么”文章吧。go语言变

这篇“Go语言变量的作用域是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言变量的作用域是什么”文章吧。

go语言变量有2种作用域:1、局部变量,是在函数级别和块级别内声明的变量;局部变量只能在它们的块或函数中访问,已经声明的局部变量不能在同一块或函数中重新声明。2、全局变量,是在包级别声明的变量;全局变量在程序的整个生命周期中都可用,不能使用“:=”运算符声明全局变量。

变量声明的位置

Go语言变量声明的位置有三种级别:

  • 包(package)级别:变量在函数外声明

  • 函数级别:变量在函数内,包括函数的传参参数变量,但在代码块外声明

  • 块级别:这个分两种,一种是显式,会使用大括号{}括起来的代码;另一种是隐式,如for,if后的初始化表达式。

变量位置示例

package mainimport "fmt"var test = "test"  //在函数外,包级别变量func main() {    a, b := 1, 2  //a和b,c在main函数内定义,函数级别变量    c := sum(a, b)    fmt.Println(c)    fmt.Println(test)    for i := 0; i < 10; i++ {   //i为for循环内定义,为隐式块级别变量        var d = i + 1    //d在for的循环体内,以大括号{}括起来,为显式块级别变量        fmt.Println(d)    }}func sum(a, b int) int {   //函数参数a和b,在函数内定义,为函数级别变量    fmt.Println(a)    fmt.Println(b)    nu := a + b    return nu}

变量作用域

变量声明的位置决定了变量允许在什么地方被访问以及变量的声明周期。变量的可访问范围称为变量的作用域。Go语言中,变量的作用域分为两类:

  • 局部变量,也称为本地变量

  • 全局变量

局部变量

在函数级别和块级别内声明的变量为局部变量。局部变量有以下特征:

  • 局部变量只能在它们的块或函数中访问。

  • 局部变量的生命周期只到块或声明它们的函数的末尾。之后,它们被垃圾回收器回收。

  • 已经声明的局部变量,不能在同一块或函数中重新声明。

示例:

package mainimport "fmt"func main() {    var a= "astrng"    fmt.Println(a)    for i := 0; i < 10; i++ {        fmt.Println(i)    }    fmt.Println(i)}func testLocal() {    fmt.Println(a)}

这个代码编译时会报错:

undefined: iundefined: a

原因:

i:为for循环体内的块级别的局部变量,在定义它的for循环体外访问,就会报undefined。

a:为main函数级别的局部变量,在testLocal函数内无法访问,会报undefined错误。

全局变量

在包级别声明的变量为全局变量。全局变量有以下特征:

  • 全局变量以小写开头时,此全局变量只能在定义它的包(package)内使用。即变量在包内可见。

  • 全局变量以大写开头时,此全局变量可以跨不同包(package)之间使用。即变量在所有地方可见。

  • 全局变量在程序的整个生命周期中都可用。

  • 不能使用:=运算符声明全局变量。

package mainimport "fmt"var a = "astring"func main() {    testGlobal()}func testGlobal() {    fmt.Println(a)  //运行结果是,正确打印出a的值“astring”}

局部变量和全局变量同名

Go语言程序中全局变量与局部变量名称可以相同,但是函数体内的局部变量会被优先考虑。

package mainimport "fmt"//声明全局变量var a float32 = 3.14func main() {    //声明局部变量    var a int = 3    fmt.Printf("a = %d\n", a)}

运行结果如下所示:

a = 3

Go语言是运行局部变量和全局变量同名,同名的变量在局部作用域范围,它将遮蔽外部作用域中的变量。

package mainimport "fmt"var a = "globala"func main() {    var a = "locala"    fmt.Println(a)  //此处的a会遮蔽外面定义的a全局变量,输出locala}func testGlobal() {  fmt.Println(a)  //此处是全局变量a,输出globala}

go语言变量的作用域是什么

以上就是关于“go语言变量的作用域是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: go语言变量的作用域是什么

本文链接: https://www.lsjlt.com/news/348624.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • go语言变量的作用域是什么
    这篇“go语言变量的作用域是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言变量的作用域是什么”文章吧。go语言变...
    99+
    2023-07-05
  • Go语言中变量的作用域是什么
    这篇文章给大家介绍Go语言中变量的作用域是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。Go 语言中变量可以在三个地方声明:函数内定义的变...
    99+
    2023-06-08
  • 详解Go语言变量作用域
    目录局部变量全局变量形式参数初始化局部和全局变量作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。 Go 语言中变量可以在三个地方声明: 函数内定...
    99+
    2022-06-07
    详解go语言 GO go语言 作用域 变量
  • Go语言中变量是什么
    在Go语言中,变量是程序运行过程中,内容可以变化(修改)的量; 变量是程序的基本组成单位,是内存中一个数据存储空间的表示,可以通过变量名找到变量值。变量的功能是存储用户的数据,是计算机语言中能储存计算结果或能表示值抽象概念。本教程操作环境:...
    99+
    2023-05-14
    Go go语言 Golang
  • Go语言中的作用域和变量怎么隐藏
    这篇文章主要介绍“Go语言中的作用域和变量怎么隐藏”,在日常操作中,相信很多人在Go语言中的作用域和变量怎么隐藏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言中的作用域和变量怎么隐藏”的疑惑有所帮助!...
    99+
    2023-06-30
  • 详解Go语言中的作用域和变量隐藏
    目录前言包隐藏全局变量类型强制闭包:= 的情况总结前言 变量隐藏在 Go 中可能会令人困惑,让我们尝试弄清楚。 package main import ( "fmt" "io/...
    99+
    2022-11-13
  • Go语言变量的生命周期是什么
    这篇文章主要介绍了Go语言变量的生命周期是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言变量的生命周期是什么文章都会有所收获,下面我们一起来看看吧。在Go语言中,变量的生命周期指的是在程序运行期间变...
    99+
    2023-07-04
  • Go语言中匿名变量指的是什么
    今天小编给大家分享一下Go语言中匿名变量指的是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在Go语言中,匿名变量就是没...
    99+
    2023-07-05
  • C语言中变量的作用域和生命周期是什么
    这篇文章给大家分享的是有关C语言中变量的作用域和生命周期是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。变量的作用域和生命周期作用域作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不...
    99+
    2023-06-29
  • go语言变量和指针的区别是什么
    区别是:1、内存分配方式,变量在栈上分配内存,指针在堆上分配内存;2、传递方式,变量传递的是变量的副本,指针传递的是变量的地址;3、空指针,变量不能为nil,指针可以为nil;4、空指针进行解引用操作会导致运行时错误,变量进行解引用操作是合...
    99+
    2023-12-14
    go语言 变量 指针
  • JS变量作用域是什么
    这篇文章主要讲解了“JS变量作用域是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS变量作用域是什么”吧!变量的作用域,指的是变量在脚本代码中的可读、...
    99+
    2022-10-19
  • VB.NET中变量作用域的作用是什么
    VB.NET中变量作用域的作用是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在一个过程或函数外声明的变量是全局变量,对本程序内部所有的过程和函数都起作用;而在一个过程或函...
    99+
    2023-06-17
  • python中什么是变量作用域
    这篇文章给大家介绍python中什么是变量作用域,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写自动...
    99+
    2023-06-14
  • C语言函数封装及变量的作用域
    目录1. for循环示例2. 模拟实现投票系统。switch3. 计算字符串空格、数字等数据数量4. 字符串转整数。5. 整数转字符串6. 浮点数转字符串7. 字符串转浮点数8. 函...
    99+
    2022-11-13
  • C语言中的变量作用域、链接和存储期的意义是什么
    小编给大家分享一下C语言中的变量作用域、链接和存储期的意义是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在c中变量有三种性质:1、存储期限:变量的存储期限决...
    99+
    2023-06-15
  • go语言的字面量是什么
    在go语言中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation),也称字面常量;字面量可以被编译器直接转换为某个类型的值。Go的字面量可以出现在两个地方:一是用于常量和变量的初始化,二是用在表达式中作为函数调用...
    99+
    2023-05-14
    go语言 Golang
  • Golang函数的变量作用域是什么
    Golang函数的变量作用域是指函数内部变量的可见性和生命周期。根据变量在函数中的位置和作用域,可以将变量分为三种类型:局部变量、参数变量和返回值变量。详细介绍:1、局部变量,是在函数内部定义的变量,只能在该函数内部使用,它们的作用域仅限于...
    99+
    2023-12-22
    Golang 函数 变量作用域
  • Go语言的变量与常量怎么定义
    这篇文章主要介绍“Go语言的变量与常量怎么定义”,在日常操作中,相信很多人在Go语言的变量与常量怎么定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言的变量与常量怎么定义”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • JavaScript局部变量与全局变量的作用域是什么
    本文小编为大家详细介绍“JavaScript局部变量与全局变量的作用域是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript局部变量与全局变量的作用域是什么”文章能帮助大家解决疑惑,下面...
    99+
    2022-10-19
  • go语言切片和变量有什么区别
    go语言切片和变量有:1、切片是一种引用类型,而变量是一种值类型;2、切片具有动态扩容的能力,而变量的大小是固定的;3、切片可以通过切片表达式来提取部分元素,而变量只能访问整个值;4、切片还可以与其他切片共享底层数据,而变量是独立的。本教程...
    99+
    2023-07-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作