Go语言程序演示变量作用域


在本文中,我们将编写 Go 语言程序,使用指针方法演示全局变量和局部变量的作用域。作用域指的是代码在程序中,特别是某个函数中,的可访问性。

作用域可以定义为两种方式:全局和局部。全局意味着在 main 函数中声明的变量不能被任何修改覆盖,并且在任何地方都保持不变;而局部访问意味着当变量在函数内部被修改时,它只能在函数内部使用,其作用域仅限于该函数。

使用相同的全局变量和局部变量

在这种方法中,我们将编写一个 Go 语言程序,使用一个全局变量和一个具有相同名称的局部变量来描述变量的作用域。

算法

  • 步骤 1 - 创建一个 package main 并声明 fmt(格式化包)包在程序中,其中 main 生成可执行代码,fmt 帮助格式化输入和输出。

  • 步骤 2 - 创建一个 main 函数,并在该函数中创建一个全局变量 name 并为其赋值

  • 步骤 3 - 在控制台上打印全局设置的 name

  • 步骤 4 - 调用名为 change_name 的函数,并在该函数中将全局变量更改为与之前设置不同的名称

  • 步骤 5 - 在控制台上打印不同的名称,以及使用 fmt 包中的 Println 函数调用函数后的名称,其中 ln 表示换行

示例

以下示例将演示如何创建一个 Go 语言程序,使用相同的全局变量和局部变量来显示变量的作用域

package main

import "fmt"

func main() {
	
   name := "Veronica"
   fmt.Println("Name before function call:", name)	
   change_name()
   fmt.Println("Name after function call:", name)
}

func change_name() {	
   name := "Virushi"
   fmt.Println("Name inside function:", name)  
}

输出

Name before function call: Veronica
Name inside function: Virushi
Name after function call: Veronica

使用指针方法

在这种特定方法中,我们将编写一个 Go 语言程序,使用指针来显示变量的作用域。将创建一个名为 a 的变量并为其赋值,稍后将对其进行递增。

算法

  • 步骤 1 - 创建一个 package main 并声明 fmt(格式化包)包在程序中,其中 main 生成可执行代码,fmt 帮助格式化输入和输出

  • 步骤 2 - 在 main 函数内部创建一个名为 a 的变量并为其赋值

  • 步骤 3 - 使用 fmt 包中的 Println 函数打印 a 的值,其中 ln 表示换行

  • 步骤 4 - 在 main 函数中调用 increment 函数,并将指向“a”变量的指针传递给它

  • 步骤 5 - 在函数中,使用 * 运算符递增指针指向的 a 的值

  • 步骤 6 - 使用 Println 函数在函数内部打印值

  • 步骤 7 - 最后,在函数调用后打印 a 的值,就像在最后几个步骤中所做的那样

示例

以下示例将展示如何创建 Go 语言程序,使用指针方法来显示变量的作用域

package main

import "fmt"

func main() {
   a := 1 
   fmt.Println("Value of a before the function is called:", a)
   increment(&a)  
   fmt.Println("Value of a after the function is called:", a)
}

func increment(ptr *int) {
   *ptr++ 
   fmt.Println("Value of a inside function:", *ptr)  
}

输出

Value of a before the function is called: 1
Value of x inside function: 2
Value of a after the function is called: 2

在 main 函数外部使用全局变量

在此示例中,我们将编写一个 Go 语言程序,使用 main 函数外部的全局变量来显示变量的作用域。将创建一个外部函数,在其中操作变量。

算法

  • 步骤 1 - 创建一个 package main 并声明 fmt(格式化包)包在程序中,其中 main 生成可执行代码,fmt 帮助格式化输入和输出

  • 步骤 2 - 创建一个全局变量并向其中写入一个字符串

  • 步骤 3 - 创建一个 main 函数,在其中进一步创建一个局部变量并为其赋值一个字符串

  • 步骤 4 - 使用 Println 函数在控制台上打印局部变量

  • 步骤 5 - 在此步骤中,在 main 函数中访问全局变量并打印字符串

  • 步骤 6 - 从 main 函数调用 callingFunction() 函数

  • 步骤 7 - 在此函数中,使用相同的变量创建另一个局部变量并将其打印到控制台

  • 步骤 8 - 再次从另一个函数访问全局变量并打印其值

  • 步骤 9 - 然后,更改全局变量的值并在控制台上打印更新后的值

  • 步骤 10 - 打印语句使用 fmt 包中的 Println 函数执行,其中 ln 表示换行

示例

以下示例说明了使用 main 函数外部的全局变量来显示变量作用域的 Go 语言程序

package main

import "fmt"

var global_variable = "I am a global variable"

func main() {
   var local_variable = "I am a local variable"
   fmt.Println(local_variable) 	
   fmt.Println(global_variable)	
   callingFunction()
}

func callingFunction() {	
   var local_variable = "I am another local variable"
   fmt.Println(local_variable) 	
   fmt.Println(global_variable) 	
   global_variable = "I am a new global variable value"	
   fmt.Println(global_variable)
}

输出

I am a local variable
I am a global variable
I am another local variable
I am a global variable
I am a new global variable value

结论

我们编译并执行了使用三个示例显示变量作用域的程序。在第一个示例中,我们创建了一个字符串变量并使用函数以不同的方式显示局部变量和全局变量。在第二个示例中,使用了指针方法,即指针作为参数传递给函数,指向要递增的变量;在第三个示例中,我们将使用 main 函数外部的全局变量并在外部函数内部访问它。

更新于: 2023年4月4日

223 次查看

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.