Go 言語のフロー制御ステートメントは、他の言語と同様に、プログラムの実行フローを制御し、意思決定、ループ、リソース管理を実装します。この記事では、for
、if
、switch
、defer
などの Go のフロー制御ステートメントを詳しく調べ、Go プログラムでそれらを効果的に使用する方法を説明します。
この記事は Go 言語チュートリアル シリーズの一部であり、開発者が Go 言語をより深く理解できるように設計されています。初心者でも経験豊富な開発者でも、このガイドは、より効率的で読みやすい Go コードを作成するために必要な知識を提供します。
この記事を読むと、次のことをマスターできるようになります:
- Go 言語のさまざまなタイプのフロー制御ステートメント。
- これらのステートメントを実際の状況で使用する方法。
- ベスト プラクティスとよくある落とし穴。
始めましょう!
コアコンセプト
1. for
ループ
for
Loop は Go 言語の唯一のループ構造ですが、非常に柔軟でさまざまなシナリオで使用できます。
基本for
ループ
for i := 0; i < 10; i++ { fmt.Println(i) }
これは、変数の初期化、条件の設定、変数の増加を行う従来の `for` ループです。
for
ループの継続実行 (while
ループと同様)
Go には `while` キーワードがありませんが、`for` ループを使用して同じ効果を実現できます。
sum := 1 for sum < 100 { sum += sum }
このループは、条件「sum
無限ループ
条件が省略された場合、`for` ループは無限に実行されます:
for { fmt.Println("无限循环") }
これは、継続的に実行する必要があるタスク (サーバーなど) に役立ちます。
-
if
ステートメント
if
ステートメント`if` ステートメントは条件付き実行に使用されます。
基本的なif
ステートメント
if x > 10 { fmt.Println("x大于10") }
if
短いステートメントを含むステートメント
条件の前に短いステートメントを実行できます:
if x := 5; x < 10 { fmt.Println("x小于10") }
if
および else
`else` と `else if` も使用できます:
if x > 10 { fmt.Println("x大于10") } else if x == 10 { fmt.Println("x等于10") } else { fmt.Println("x小于10") }
-
switch
ステートメント
switch
ステートメント「switch」ステートメントは、複数の条件を処理する強力な方法です。
基本的なswitch
ステートメント
switch os := runtime.GOOS; os { case "darwin": fmt.Println("OS X") case "linux": fmt.Println("Linux") default: fmt.Printf("%s.\n", os) }
switch
ステートメントの実行順序
Go は `switch` ステートメントのケースを上から下に評価し、一致が成功すると停止します。
無条件switch
ステートメント
無条件の `switch` ステートメントは `switch true` と同等です:
t := time.Now() switch { case t.Hour() < 12: fmt.Println("上午") case t.Hour() < 18: fmt.Println("下午") default: fmt.Println("晚上") }
-
defer
ステートメント
defer
ステートメント`defer` ステートメントは、周囲の関数が戻るまで関数の実行を延期します。
基本的なdefer
ステートメント
func main() { defer fmt.Println("world") fmt.Println("hello") }
出力:
<code>hello world</code>
積み重ねられたdefer
ステートメント
遅延関数は後入れ先出し (LIFO) 順序で実行されます:
func main() { defer fmt.Println("first") defer fmt.Println("second") defer fmt.Println("third") }
出力:
<code>third second first</code>
実践例
これらのフロー制御ステートメントの使用を示す実際の例を見てみましょう。タスクリストを処理し、そのステータスを出力する簡単なプログラムを作成します。
for i := 0; i < 10; i++ { fmt.Println(i) }
手順の詳細説明
- **タスク構造**: 「Name」フィールドと「Complete」フィールドを含む「Task」構造を定義します。
- **タスク リスト**: `Task` オブジェクトのスライスを作成します。
- **for ループ**: `for` ループを使用してタスクを反復処理します。各タスクについて、「if」ステートメントを使用してタスクが完了したかどうかを確認します。
- **switch ステートメント**: `switch` ステートメントを使用して、今日が週末なのか営業日なのかを確認します。
- **defer ステートメント**: `defer` を使用して、すべてのタスクが処理された後にメッセージを出力します。
ベストプラクティス
- **for ループを賢く使用する**: Go には `for` ループしかないため、正しく使用するようにしてください。必要な場合を除き、無限ループは避けてください。
- **if ステートメントを単純にする**: コードを簡潔で読みやすくするために、「if」条件で短いステートメントを使用します。
- **複数の条件を処理するには switch を使用します**: 複数の条件を処理する場合、複数の `if-else` ステートメントよりも `switch` ステートメントの方が読みやすくなります。
- **クリーンアップには defer を使用します**: `defer` は、ファイルを閉じる、ロックを解放するなど、リソースのクリーンアップに最適です。
- **深いネストを避ける**: 深くネストされた「if」または「for」ステートメントはコードを読みにくくする可能性があります。関数へのリファクタリングを検討してください。
結論
フロー制御ステートメントは、プログラムの実行フローを制御できる Go 言語の重要なツールです。 「for」、「if」、「switch」、「defer」をマスターすることで、より効率的で読みやすく、保守しやすい Go コードを作成できます。
この記事で提供されている例を試し、ご自身で概念を試してみることをお勧めします。
行動喚起
この記事は、Go 言語チュートリアル シリーズ の一部であり、より熟練した Go 開発者になるのに役立つように設計されています。この記事が役に立ったと思われる場合は、このシリーズの以前および今後のチュートリアルを必ずチェックしてください。私のブログまたは Dev.to で確認してください。
プログラミングを楽しんでください! ?
以上がGo のフロー制御ステートメントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

GO言語で文字列パッケージをマスターすると、テキスト処理機能と開発効率が向上します。 1)コンテナ機能を使用してサブストリングを確認し、2)インデックス関数を使用してサブストリング位置を見つけ、3)関数を効率的にスプライスストリングスライス、4)機能を置き換えてサブストリングを置き換えます。空の文字列や大きな文字列操作のパフォーマンスの問題をチェックしないなど、一般的なエラーを避けるように注意してください。

文字列の操作を簡素化し、コードをより明確かつ効率的にすることができるため、GOの文字列パッケージを気にする必要があります。 1)文字列を使用して、弦を効率的にスプライスするために参加します。 2)文字列を使用して、空白の文字で文字列を分割します。 3)文字列を介してサブストリング位置を見つけます。Indexと文字列lastindex; 4)文字列を使用して、文字列を置き換える。 5)文字列を使用して、ビルダーを効率的にスプライスします。 6)予期しない結果を避けるために、常に入力を確認してください。

theStringspackageIngoisESSENTINEFOREFFSTRINGMANIPULATION.1)ITOFFERSSSIMPLEYETPOWERFULFUNCTIONS FORTOSSCHECKINGSUBSTRINGSNINGSTRINGS.2)ITHANDLESUNICODEWELL、ITHANDLESUNICODEWELL

whendeciding botedego'sbytespackageandstringspackage、usebytes.bufferbinarydataandstrings.builderforstringoperations.1)usebytes.bufferforkithbyteslices、binarydata、appendingdatatypes、およびwritioio.writioio.writioio.writioio.writioio.

Goの文字列パッケージは、さまざまな文字列操作機能を提供します。 1)文字列を使用して、サブストリングを確認します。 2)文字列を使用して、ストリングをサブストリングスライスに分割します。 3)文字列を通して文字列をマージします。 4)文字列または文字列を使用して、文字列の最初と端でブランクまたは指定された文字を削除します。 5)指定されたすべてのサブストリングを文字列に置き換えます。ReplaceAll。 6)文字列を使用して、hasprefixまたは文字列hassuffixを使用して、文字列の接頭辞または接尾辞を確認します。

GO言語文字列パッケージを使用すると、コードの品質が向上します。 1)文字列を使用して()join()を使用して、パフォーマンスのオーバーヘッドを避けるために、文字列アレイをエレガントに接続します。 2)strings.split()とstrings.contains()を組み合わせて、テキストを処理し、ケースの感度の問題に注意を払います。 3)文字列の乱用を避け、replace()を回避し、多数の置換に正規表現を使用することを検討します。 4)文字列を使用して、ビルダーを使用して、頻繁にスプライシング文字列の性能を向上させます。

GoのBYTESパッケージは、バイトスライスを処理するためのさまざまな実用的な機能を提供します。 1.bites.containsは、バイトスライスに特定のシーケンスが含まれているかどうかを確認するために使用されます。 2.bites.splitは、バイトスライスをスモールピースに分割するために使用されます。 3.bites.joinは、複数のバイトスライスを1つに連結するために使用されます。 4.bites.trimspaceは、バイトスライスのフロントブランクとバックブランクを削除するために使用されます。 5.バイト。エクアルは、2つのバイトスライスが等しいかどうかを比較するために使用されます。 6.bytes.indexは、大規模なスライスでサブスライスの開始インデックスを見つけるために使用されます。

エンコード/binaryPackageIngoisESSENTINESTENTINESTINESTIDANDARDIZEDWAIDTOREADANDWRITEBINIRYDATA、クロスプラットフォームコンパティビティアンドハンドリングの可能性を確保することを確認します


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
