函数作用域基础
本课属于 Coddy GO 学习旅程的“基础知识”单元。第 58 课,共 109 课。
在 Go 中,在函数内部声明的变量只能在该函数内部访问。这称为函数作用域。
创建一个包含局部变量的函数:
func calculateTotal(price int, quantity int) int {
tax := 0.1 * float64(price * quantity) // 局部变量
total := price * quantity + int(tax)
return total
}
func main() {
result := calculateTotal(10, 2)
fmt.Println("Total:", result)
// fmt.Println(tax) // 错误:此处无法访问 tax
}输出只显示返回值:
Total: 22变量 tax 只在 calculateTotal 函数内部存在,无法从 main 访问。
挑战
入门在这个挑战中,你将练习理解 Go 中的函数作用域。你需要修复一个存在作用域问题的简单程序。
程序中有一个全局变量 message,还有一个尝试修改它的函数。你的任务是修复代码,让函数能够正确更新全局变量。
亲手试试
package main
import "fmt"
// 全局变量
var message string = "Hello from global scope"
func updateMessage() {
// 这会创建一个新的局部变量,而不是修改全局变量
message := "Hello from function scope"
fmt.Println("Inside function:", message)
}
func main() {
fmt.Println("Before function call:", message)
updateMessage()
// TODO: 全局变量 message 仍是原来的值
// 修改 updateMessage() 函数,让它更改全局变量
fmt.Println("After function call:", message)
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Go 在线编译器