Golang 显示变量范围
在本文中,我们将编写Go语言程序,使用指针方法来展示全局变量和局部变量的范围。范围是指程序中代码片段的可访问性,特指某个函数中的代码片段。
范围可以分为全局和局部两种方式。全局意味着在主函数中声明的变量不能被任何修改覆盖,并且在任何地方都保持不变,而局部访问意味着当变量在函数内部被修改时,只能在函数内部使用,并且其范围仅限于该函数内部。
使用相同的全局和局部变量
在这种方法中,我们将编写一个Golang程序,使用一个全局变量和一个同名的局部变量来描述变量的范围。
步骤
- 步骤1 - 创建一个名为”main”的包,并在程序中声明 fmt(格式化包)包,其中 “main” 产生可执行代码,而 fmt 在格式化输入和输出时起作用。
-
步骤2 - 创建一个 main 函数,在该函数中创建一个全局变量 name,并赋值给它
-
步骤3 - 在控制台上打印出全局设置的名字
-
步骤4 - 调用名为 change_name 的函数,在该函数中将全局变量更改为之前设置的不同名字
-
步骤5 - 在控制台上打印出不同的名字,以及调用函数后的名字,使用 fmt 包中的 Println 函数,其中 ln 表示换行
示例
以下示例演示了如何创建一个Golang程序,使用相同的全局和局部变量来显示变量的范围
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
使用指针方法
在这种特定的方法中,我们将编写一个Golang程序,使用指针来展示变量的作用域。将创建一个名为a的变量,并分配一个稍后将被递增的值。
步骤
- 步骤1 - 在程序中创建一个主要的包,并声明fmt(format包)包,其中主要生成可执行代码,fmt帮助格式化输入和输出。
-
步骤2 - 在主函数中创建一个名为a的变量,并为其赋值。
-
步骤3 - 使用fmt包的Println函数打印a的值,其中ln表示新行。
-
步骤4 - 在主函数中使用指向’a’变量的指针调用increment函数。
-
步骤5 - 在函数中使用*运算符递增指针指向的a的值。
-
步骤6 - 使用Println函数在函数内打印该值。
-
步骤7 - 最后,按照上述步骤调用函数后打印a的值。
示例
以下示例将展示如何创建一个使用指针方法展示变量作用域的Golang程序。
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
在主函数之外使用全局变量
在这个示例中,我们将编写一个Go程序,用全局变量来展示变量的作用域。我们将创建一个外部函数,其中会对这些变量进行操作。
步骤
- 步骤1 - 创建一个包main,声明fmt(格式化包)包在程序中。main产生可执行代码,fmt用于格式化输入和输出。
-
步骤2 - 创建一个全局变量,并将一个字符串赋值给它。
-
步骤3 - 创建一个main函数,然后在其中再创建一个局部变量,将一个字符串赋值给它。
-
步骤4 - 使用Println函数将局部变量打印到控制台上。
-
步骤5 - 在这一步中,访问主函数中的全局变量,并打印出字符串。
-
步骤6 - 从主函数中调用callingFunction()函数。
-
步骤7 - 在这个函数中,使用相同的变量创建另一个局部变量,并将其打印到控制台上。
-
步骤8 - 再次从另一个函数中访问全局变量,并打印其值。
-
步骤9 - 然后,改变全局变量的值,并将更新后的值打印到控制台上。
-
步骤10 - 使用fmt包中的Println函数执行打印语句,其中ln表示换行。
示例
以下示例演示了一个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
结论
我们编写并执行了三个示例程序,展示了变量范围的情况。在第一个示例中,我们创建了一个字符串变量,并使用函数以不同的方式显示局部和全局变量。第二个示例使用指针方法,即将指向要递增的变量的指针作为参数传递给函数,第三个示例中,我们将在主函数外部使用全局变量,并在外部函数中访问它。