Go言語には静的グローバル変数はありますか?
Go 言語には静的グローバル変数がありません。より柔軟な方法を使用してグローバル変数の必要性を処理します。グローバル変数は通常、パッケージ レベルで宣言されます。つまり、関数の外部で宣言された変数です。これらの変数は、パッケージ レベルで宣言されます。グローバル変数はパッケージ全体で表示され、パッケージ内の任意の関数で使用できます。
この記事の動作環境: Windows 10 システム、go1.20 バージョン、DELL G3 コンピューター。
Go 言語には静的なグローバル変数がありません。より柔軟な方法を使用してグローバル変数のニーズに対応します。 Go 言語では、グローバル変数は通常、パッケージ レベルで宣言されます。つまり、関数の外で宣言された変数です。これらのグローバル変数はパッケージ全体で表示され、パッケージ内の任意の関数で使用できます。
ただし、Go 言語はカプセル化と保守性を重視しており、グローバル変数の使用を推奨しません。代わりに、Go 言語では、ローカル変数と関数パラメーターを使用してデータを渡すことが推奨されています。このアプローチは、コードの編成とテストにさらに役立ち、複数のコルーチン間でデータを共有することで発生する可能性のある同時実行性の問題を回避できます。
プログラム全体でグローバル状態を使用する必要がある場合、Go 言語はそれを実現するための非常に簡潔な方法を提供します。パッケージ レベルで変数を定義し、それをパッケージ レベルの関数のローカル変数として使用できます。このように、変数は関数が呼び出されるたびに初期化されますが、その状態は変化しません。変数は関数のスコープに制限されているため、他の関数は変数に直接アクセスできず、静的グローバル変数と同様の効果が得られます。
Go 言語には静的変数はありませんが、設定情報など、実際のプロセスでは同様の効果が必要になることがよくあります。次の書き込みメソッドは、静的変数と同様の効果を実現するために、例としてユーザー名 (username) の読み取りと書き込みを使用します。
まずは main.go の呼び出しの書き方を見てみましょう:
//在main函数中set好username的值,然后在其他函数中获取username的值 //main函数中进行set操作 func main() { config.WithConfig().SetConfig() initApp() } //该方法进行get操作 func initApp(){ config.WithConfig().GetConfig() }
次に config.go の書き方を見てみましょう:
package config //配置结构体 type Config struct { username string } //关键在此,声明一个全局变量所有的读写操作实际上都是在操作c var c *Config func init() { c = new(Config) } //方便链式操作 func WithConfig() *Config { return c.WithConfig() } func (c *Config) WithConfig() *Config { return c } //写 func (c *Config) SetConfig(name string) { c.username = name } //读 func (c *Config) GetConfig() string { return c.username }
以上が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を使用する問題を調査します。 �...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

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

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

GO言語で構造を定義する2つの方法:VARとタイプのキーワードの違い。構造を定義するとき、GO言語はしばしば2つの異なる執筆方法を見ます:最初...

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