Go 言語は、Google によって開発された、ガベージ コレクションと同時実行機能を備えた静的なコンパイル済みプログラミング言語です。そのため、タイプセーフな言語であり、ネイティブコードに組み込むことでプログラムの実行速度も非常に高速になります。
Go 言語の主な目標は、静的言語の安全性と効率性と動的言語の開発の容易さを有機的に組み合わせて完璧なバランスを達成し、プログラミングが苦痛に困難な選択ではなく、より楽しくなるようにすることです。
Go 言語は動的言語のいくつかの特徴を備えていますが、その文法スタイルは C 言語のそれに似ています。 C言語をベースに大幅に簡略化され、不要な式括弧が削除され、ループの表現方法はforの1つだけとなり、値やキー値などの多様なトラバースが実現できます。したがって、Go 言語は非常に簡単に始めることができます。
多くの読者は、入門書を読んで初めて言語を理解し始めたと回答しており、通常は 2 ~ 3 つのプログラミング言語を使用しています。彼らにとって、Go 言語に慣れるまでのプロセスは 1 ~ 2 日で、その後、特定の問題を解決するために Go 言語を使い始めることができ、約 1 週間で確立されたタスクを Go 言語を使用して完了できるようになります。
Go 言語をゼロから使用して問題を解決できる速度は、他の言語ではまったく想像できません。 C++ を学んだ友人は、1 ~ 2 年間の集中的な理論学習と実践だけでこの言語の本質を学ぶことができ、間違いを避けるための基本的な方法を知っていることを知っています。
では、Go 言語はどれほど単純なのでしょうか? HTTP サーバーを実装して調べてみましょう。
[例] HTTP ファイルサーバーは一般的な Web サービスの 1 つです。開発段階ではテスト目的でApacheやNginxサーバーを自分でインストールする必要があり、設定のダウンロードとインストールに時間がかかります。以下に示すように、Go 言語で単純な HTTP サーバーを実装するには、数行のコードしか必要としません。
package main
import (
"net/http"
)
function main() {
http.Handle("/", http.FileServer(http.Dir(".")))
http.ListenAndServe(":8080", nil)
}
コードの説明は次のとおりです。
- 行 1 は、現在のファイルをメイン パッケージとしてマークしており、これは Go プログラムのエントリ パッケージでもあります。
- 3 ~ 5 行目では、HTTP の基本的なカプセル化とアクセスである net/http パッケージをインポートしています。
- 7 行目、プログラム実行のためのエントリ関数 main()。
- 8行目、http.FileServerファイルサーバーを使用して、現在のディレクトリをルートディレクトリ(
/
ディレクトリ)のプロセッサとして使用し、ルートディレクトリにアクセスし、現在のディレクトリに入ります。 - 9 行目では、デフォルトの HTTP サービスがローカル マシンのポート 8080 をリッスンします。
このソース コードを main.go (Go 言語のソース ファイルの拡張子は.go
) として保存し、Go 言語の開発パッケージをインストールし (インストール方法は後で説明します)、コマンド ラインで次のコマンドを入力します。
$ go run main.go
ブラウザにhttp://127.0.0.1:8080
と入力してファイルを参照します。これらのファイルは、HTTP サーバー上の現在のディレクトリのマッピング ディレクトリです。
Go言語のエンジニアリング構造はシンプルです
Go 言語のソース コードにはヘッダー ファイルは必要なく、コンパイルされたファイルはすべて、接尾辞.go
が付いたソース コード ファイルから取得されます。
Go 言語は、ソリューション、プロジェクト ファイル、および Make File を必要としません。プロジェクト ファイルが GOPATH の規則に従って入力されている限り、go build/go install を使用してコンパイルでき、コンパイルされたバイナリ実行可能ファイルは均一に配置されます。 bin フォルダー。
次の章では、GOPATH と go build/go install の詳細な使用法を紹介します。
Go言語はコンパイルが速い
Go 言語は独自の機能を使用して同時コンパイルを実装できます。同時コンパイルの最小要素はパッケージです。 Go 1.9 以降では、最小の同時コンパイル要素が関数に縮小され、全体的なコンパイル速度が 20% 向上しました。
さらに、Go 言語にはシンプルな構文、厳密なエンジニアリング構造設計、ヘッダー ファイルなし、パッケージやその他のルールの相互依存がないため、コンパイル プロセスが大幅に高速化されます。