Go言語学習チェック——第三章Go基本的なプログラム設計構造(1)

3610 ワード

第三章Go基本的なプログラム設計構造
Goは新しい言語です.他の言語からいくつかの特性を参考にしていますが、Go言語のプログラミング方式は他の言語とは本質的に異なります.C++やJavaなどのコードを単純にGoコードに翻訳するだけでは最適なGoコードは得られない.JAvaプログラマーはjavaの考え方でプログラミングし、Goの考え方ではありません.goの考え方を採用すれば、一つの問題にはまったく異なる解決方法があるかもしれない.そのため、本当にGo言語をうまく使うには、その言語特性と設計思想を理解することが重要です.また、名前の付け方、フォーマット、プログラム構造など、Go言語の変化スタイルも知り、共通の方法で他のGoプログラマーとのコミュニケーションも容易になります.
次に、Go言語を徐々に学習します.この章では、構文、変数の宣言、注釈、制御プロセスなどの基本的なプログラム設計知識について説明します.
3.1簡単なGoアプリケーション
5つの数字を含む配列を合計する最も簡単なGoアプリケーションを見てみましょう.
package main import"fmt"//配列の和func sum(a[]int)int//配列の和var s int=0 for i:=0;iプログラムは小さいですが、go言語のより多くの特性が含まれています.各Goソースファイルの先頭には、ソースファイルが存在するパッケージを示す「package」宣言文があります.また、特定の機能をインポート(import文)するパッケージを特定の必要に応じて選択することもできます.この例では、よく知られているprintf関数を使用するために「fmt」パッケージをインポートします.ただし、Go言語では、Printf関数は大文字で始まり、fmtパッケージ名を接頭辞としてfmt.Printfとします.
キーワード「func」は、関数を定義するために使用されます.キーワード「var」は変数を宣言するために使用されます.「len」関数は、配列または文字列の長さを求める組み込み関数です.すべての初期化が完了すると、mainパッケージのmain関数からプログラムが実行されます.
定数文字列はUnicode文字を含み、UTF-8符号化を用いることができる.実際、すべてのGo言語ソースファイルはUTF-8符号化されています.
変数宣言構文は次のとおりです.
        var s string = "";

ここには「var」キーワードがあり、変数の名前と変数のデータ型に続いて、「=」記号で初期値を割り当てることができます.
簡潔さはGoの目標であり,変数の定義もより簡略な文法である.Goは初期値から変数のタイプを判断することができ,データ型を明示的に書く必要はない.変数を次のように定義することもできます.
        var s = "";
もっと短い書き方もあります.
        s := "";
オペレータ":="は、Goで変数の初期化を同時に行うと宣言される場合によく使用されます.次のコードは、「for」で変数を宣言して初期化します.
for i := 0; i < len(a); i++ {
Go言語の「for」文とC言語にはいくつかの違いがあります.第一に、forはGoの中で唯一の循環文で、Goにはwhileやdo文はありません.第二に、forの条件文は括弧で包む必要はありませんが、循環体は括弧を使う必要があります.この規則はifとswitchにも適用されます.後にforのいくつかの例を見ます.
ループで、コマンドラインパラメータと空白を「+=」オペレータで文字列「s」に追加します.ループが終了すると、コマンドラインに「-n」オプションがあるかどうかによって、末尾に改行を追加するかどうかを判断します.結果を最後に出力します.
注意すべき点は、main.main関数には戻り値がありません(関数は戻り値のないタイプとして定義されています).main.mainが最後まで実行されている場合は、「成功」を表します.エラーメッセージを返すには、システムコールで強制終了を呼び出すことができます.
        os.Exit(1)
OSパッケージには、OS.Argsがflagパッケージの一部である(コマンドライン入力を取得するために使用される)など、他の多くの起動関連機能も含まれています.
コード注記の方法はC++と似ています.
   /* ... */ブロックコメント//...行コメント
3.2セミコロン
注意深い読者は、前のコードの行の末尾にセミコロンがほとんど現れていないことに気づくかもしれません.実はGo言語では、forループの初期化文を区切るときにしかよく使われません.しかし、コードセグメントの末尾のセミコロンは一般的に省略されている.
もちろん、CやJAVAのようにセミコロンを使うこともできます.しかし、ほとんどの場合、完全な文の末尾のセミコロンはgoコンパイラによって自動的に追加されます.ユーザーは各セミコロンを入力する必要はありません.
Goは構文解析器を用いて行の最後に自動的にセミコロンを追加し、コードを書くときにセミコロンを略すことができます.
このルールは、タグの前の行が識別子(identifier)である場合(intやfloat 64のように)、例えば数字、文字列、タグである.
break continue fallthrough return++ -- ) }
構文解析器は、タグの後ろにセミコロンを挿入します.つまり、「タグの後ろに改行があります.これは、文の終わりかもしれません.セミコロンを追加します」ということです.
右かっこの前にセミコロンを省略できます.たとえば、次のようにします.
go func() { for { dst
セミコロンの詳細については、Go言語の説明ドキュメントを参照してください.しかし、実際にコードを書くときは、1行の末尾のセミコロンだけを覚えておくと省略できます(1行に複数の文を書く場合はセミコロンで区切ることができます).もう1つの利点は、カッコで囲まれたサブエリアを終了するときにセミコロンも省略できることです.
特定の場合、セミコロンのないコードを書くこともできます.ただし、「if」などの後ろに大きな括弧がある文については、左の大きな括弧を「if」文の同じ行に置く必要があります.そうしないとコンパイルエラーが発生する可能性があります.Go言語では、開始括弧を同じ行の末尾に置く符号化スタイルを強制的に使用します.
例:
if i