Go 言語の変数には 2 つのスコープがあります: 1. ローカル変数、関数レベルとブロック レベルで宣言された変数です。ローカル変数はブロックまたは関数内でのみアクセスでき、宣言されたローカル変数は内部で再宣言できません。同じブロックまたは関数。 2. グローバル変数はパッケージ レベルで宣言された変数です。グローバル変数はプログラムのライフサイクル全体を通じて使用できますが、グローバル変数は「:=」演算子を使用して宣言することはできません。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
Go 言語の変数宣言の場所には 3 つのレベルがあります:
#変数の場所の例
package main import "fmt" var test = "test" //在函数外,包级别变量 func main() { a, b := 1, 2 //a和b,c在main函数内定义,函数级别变量 c := sum(a, b) fmt.Println(c) fmt.Println(test) for i := 0; i < 10; i++ { //i为for循环内定义,为隐式块级别变量 var d = i + 1 //d在for的循环体内,以大括号{}括起来,为显式块级别变量 fmt.Println(d) } } func sum(a, b int) int { //函数参数a和b,在函数内定义,为函数级别变量 fmt.Println(a) fmt.Println(b) nu := a + b return nu }
package main import "fmt" func main() { var a= "astrng" fmt.Println(a) for i := 0; i < 10; i++ { fmt.Println(i) } fmt.Println(i) } func testLocal() { fmt.Println(a) }
undefined: i undefined: a
演算子を使用して宣言できません。
package main import "fmt" var a = "astring" func main() { testGlobal() } func testGlobal() { fmt.Println(a) //运行结果是,正确打印出a的值“astring” }
package main import "fmt" //声明全局变量 var a float32 = 3.14 func main() { //声明局部变量 var a int = 3 fmt.Printf("a = %d\n", a) }
a = 3
package main import "fmt" var a = "globala" func main() { var a = "locala" fmt.Println(a) //此处的a会遮蔽外面定义的a全局变量,输出locala } func testGlobal() { fmt.Println(a) //此处是全局变量a,输出globala }
以上がGo 言語変数にはいくつかのスコープがありますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。