Menu
CoddyTech

函数作用域基础

本课属于 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 访问。

challenge icon

挑战

入门

在这个挑战中,你将练习理解 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)
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Go 在线编译器