Golang 関数の変数スコープの詳細な説明
Golang では、関数は特定のタスクまたは計算を完了するために使用される基本的なコード ブロックです。関数内で定義された変数には特定のスコープ、つまりどのコード セグメントで変数が表示され、使用できるかが決まります。この記事では、Golang 関数の変数のスコープについて詳しく説明し、具体的なコード例を示します。
package main import "fmt" func main() { // 函数内部定义的变量 var num int = 10 // 局部变量 fmt.Println(num) // 输出:10 // 在函数内部定义的变量只在函数内部可见 fmt.Println(other) // 编译错误:undefined: other }
この例では、num
は main
関数内で定義されたローカル変数です。 main
関数内でのみ使用できます。 fmt.Println(num)
ステートメントでは、num
の値を正しく出力できます。ただし、fmt.Println(other)
ステートメントでは、other
変数が main
関数内に存在しないため、コンパイラはエラーを報告します。
package main import "fmt" func square(num int) { // 函数参数num是一个局部变量 fmt.Println("平方数为:", num*num) } func main() { square(5) }
この例では、square
関数にはパラメータ num
があります。関数内では、num
変数にアクセスして使用できます。 main
関数で square(5)
を呼び出すと、5 がパラメーターとして square
関数に渡されるため、出力結果は square になります。番号: 25
。
package main import "fmt" var name string = "Alice" // 全局变量 func main() { fmt.Println("姓名:", name) // 输出:Alice changeName() fmt.Println("姓名:", name) // 输出:Bob } func changeName() { name = "Bob" // 修改全局变量的值 }
この例では、グローバル変数 name
を定義し、それを main
関数と changeName# で使用します。 ##関数内でその値を使用および変更します。
main 関数では、グローバル変数
name の値を正しく出力できます。
changeName 関数では、グローバル変数
name の値を「Bob」に変更します。最後に、
main 関数でグローバル変数
name の値を再度出力すると、「Bob」に変更されていることがわかります。
package main import "fmt" func main() { for i := 0; i < 5; i++ { // for循环中定义的变量也在整个函数内可见 fmt.Println(i) } // 在循环外部仍然可以访问i fmt.Println("最终的i值:", i) // 编译错误:undefined: i }
for ループ内で変数
i を定義しました。
main 関数スコープ全体で
i 変数にアクセスして使用できます。ただし、ループの外で
i にアクセスしようとすると、コンパイラはエラーを報告します。
Golang の関数内の変数スコープには、ローカル スコープと関数パラメーター スコープが含まれます。ローカル変数と関数パラメーターは関数内でのみ表示されます。グローバル変数にはグローバル スコープがあり、プログラム内のどこからでも表示および使用できます。 Golang は、ループまたは条件ステートメントで定義された変数が関数スコープ全体で表示されるような、ブロックレベルのスコープの概念をサポートしていません。変数スコープの概念を知り、理解することは、読みやすく保守しやすいコードを作成するために重要です。
以上がGolang関数の変数スコープの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。