Go 言語変数にはいくつかのスコープがあります
Go 言語の変数には 2 つのスコープがあります: 1. ローカル変数、関数レベルとブロック レベルで宣言された変数です。ローカル変数はブロックまたは関数内でのみアクセスでき、宣言されたローカル変数は内部で再宣言できません。同じブロックまたは関数。 2. グローバル変数はパッケージ レベルで宣言された変数です。グローバル変数はプログラムのライフサイクル全体を通じて使用できますが、グローバル変数は「:=」演算子を使用して宣言することはできません。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
変数宣言の場所
Go 言語の変数宣言の場所には 3 つのレベルがあります:
- パッケージ レベル:変数は関数の外で宣言されます
- 関数レベル: 変数は関数のパラメーター変数を含めて関数の内部にありますが、コード ブロックの外で宣言されます
- ブロック レベル: には 2 つのタイプがあります。これは、1 つは明示的に、中括弧 {} で囲まれたコードが使用されるもので、もう 1 つは暗黙的に (for または if の後の初期化式など) に使用されます。
#変数の場所の例
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 }
変数のスコープ
変数宣言の場所によって、変数が何であるかが決まります。アクセスできる場所と変数の宣言期間。変数のアクセス可能な範囲を変数のスコープと呼びます。 Go 言語では、変数のスコープは次の 2 つのカテゴリに分類されます。- ローカル変数 (ローカル変数とも呼ばれます) グローバル変数
ローカル変数
関数レベルおよびブロック レベルで宣言された変数はローカル変数です。ローカル変数には次の特性があります。- ローカル変数には、そのブロックまたは関数内でのみアクセスできます。 ローカル変数は、それが宣言されているブロックまたは関数の終わりまでのみ存続します。その後、それらはガベージ コレクターによって収集されます。 宣言されたローカル変数を同じブロックまたは関数内で再宣言することはできません。
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” }
ローカル変数とグローバル変数は同じ名前です
Go 言語プログラムのグローバル変数とローカル変数は同じ名前を持つことができますが、ローカル変数は関数本体が優先して考慮されます。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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

VSCODEユーザーのGolang Generic Function Typeの制約の自動削除は、VSCODEを使用してGolangコードを書くときに奇妙な問題に遭遇する可能性があります。いつ...

GoLandを使用する場合のGolandのカスタム構造タグの問題に関して、Go Language Developmentに使用する場合、いくつかの構成の問題に遭遇することがよくあります。それらの1つは...

マルチプロセスのログライティングの並行性セキュリティの問題を効率的に処理します。複数のプロセスが同じログファイルを同時に書き込みます。並行性が安全で効率的であることを確認する方法は?これは...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Golangで機能をバックグラウンドランニング、停止、リロードする方法は?プログラミングプロセス中に、バックグラウンド操作を実装して停止する必要があることがよくあります...

ポインター構文とviperライブラリの使用における問題への取り組みGO言語でプログラミングするとき、特にポインターの構文と使用を理解することが重要です...
