在本文中,我们将编写Go语言程序,使用指针方法展示全局和局部变量的作用域。作用域在特定函数程序中指代码可访问性。
作用域可以分为全局和局部两种。全局指在main中声明的变量不能被任何修改覆盖,始终保持不变,而局部访问表示变量在函数内部修改后只能在函数内部使用,其作用域仅限于该函数。
使用相同的全局和局部变量
在这种方法中,我们将编写一个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)
change_name()
fmt.Println("函数调用之后的名称:", name)
}
func change_name() {
name := "Virushi"
fmt.Println("函数内的名称:", name)
}
输出
函数调用之前的名称:Veronica
函数内的名称:Virushi
函数调用之后的名称:Veronica
使用指针方法
在这种特殊方法中,我们将编写一个Golang程序,使用指针来展示变量的作用域。将创建一个名为a的变量,并分配稍后将递增的值。
算法
- 步骤1 - 创建一个main程序包,并在该程序中声明fmt(格式化)程序包,其中main生成可执行代码,fmt帮助格式化输入和输出。
-
步骤2 - 在main函数中创建一个名为a的变量并分配值。
-
步骤3 - 从fmt程序包中使用Println函数打印a的值,其中ln表示新行。
-
步骤4 - 在main中以指针的方式调用递增函数,并将a变量的地址传递给该函数。
-
步骤5 - 在该函数中,使用*运算符递增指针指向的a变量的值。
-
步骤6 - 使用Println函数在函数内部打印变量的值。
-
步骤7 - 最后,像上一步中那样打印a变量的值,显示函数调用之后的变量值。
示例
以下示例将演示如何创建Golang程序,使用指针方法展示变量的作用域
package main
import "fmt"
func main() {
a := 1
fmt.Println("调用函数前 a 的值为:", a)
increment(&a)
fmt.Println("调用函数后 a 的值为:", a)
}
func increment(ptr *int) {
*ptr++
fmt.Println("函数内部的 a 值为:", *ptr)
}
输出
调用函数前 a 的值为: 1
函数内部的 a 值为: 2
调用函数后 a 的值为: 2
在主函数之外使用全局变量
在这个例子中,我们将编写一个 Golang 程序,以显示使用全局变量在主函数之外的变量作用域。将创建一个外部函数,在其中将操作变量。
算法
- 步骤 1 − 在程序中创建一个 package main 并声明 fmt(format package) package,其中 main 生成可执行代码,fmt 助于格式化输入和输出。
-
步骤 2 − 创建一个全局变量并将一个字符串写入它。
-
步骤 3 − 创建一个 main 函数,在其中进一步创建一个本地变量并将一个字符串赋给它。
-
步骤 4 − 使用 Println 函数在控制台上打印局部变量。
-
步骤 5 − 在这一步骤中,在主函数中访问全局变量并打印字符串。
-
步骤 6 − 从主要的 callingFunction() 函数中调用函数。
-
步骤 7 − 在这个函数中,使用相同的变量再创建一个本地变量并将其打印在控制台上。
-
步骤 8 − 再次从另一个函数访问全局变量并打印其值。
-
步骤 9 − 然后,更改全局变量的值并在控制台上打印更新后的值。
-
步骤 10 − 使用 fmt 包的 Println 函数执行打印语句,其中 ln 表示换行。
示例
以下例子说明了使用全局变量在主函数之外显示变量作用域的 Golang 程序。
package main
import "fmt"
var global_variable = "我是一个全局变量"
func main() {
var local_variable = "我是一个局部变量"
fmt.Println(local_variable)
fmt.Println(global_variable)
callingFunction()
}
func callingFunction() {
var local_variable = "我是另一个局部变量"
fmt.Println(local_variable)
fmt.Println(global_variable)
global_variable = "我是新的全局变量值"
fmt.Println(global_variable)
}
输出
我是一个局部变量
我是一个全局变量
我是另一个局部变量
我是一个全局变量
我是新的全局变量值
结论
我们编译并执行了三个示例,以显示使用三种不同方法展示变量作用域的 Golang 程序。第一个示例创建了一个字符串变量,并使用函数以不同的方式显示局部和全局变量。第二个示例使用指针方法,即将指向要增加变量的指针作为参数传递给函数。第三个示例中,我们将在主函数之外使用全局变量,并在外部函数中访问它。