banner
SlhwSR

SlhwSR

热爱技术的一名全栈开发者
github
bilibili

ゼロからGo言語を学ぶ

1. 言語の特性#

Go 言語は、本質的に(プログラムと構造の面で)並行プログラミングを実現します。

Go 言語にはクラスや継承の概念がないため、Java や C++ とは異なるように見えます。しかし、インターフェース(interface)の概念を使用して多態性を実現しています。Go 言語には、明確で理解しやすい軽量な型システムがあり、型の階層もありません。したがって、これはハイブリッドな言語と言えます。

従来のオブジェクト指向言語では、オブジェクト指向プログラミング技術を使用すると非常に複雑になります。常に複雑なパターンを使用して大規模な型階層を構築するため、プログラミング言語が生産性を向上させることを妨げています。

関数は Go 言語の基本構成要素であり、使用方法は非常に柔軟です。第 6 章では、関数型プログラミングの基本的な概念を見ていきます。

Go 言語は静的型を使用しているため、型安全な言語です。さらに、ネイティブコードにビルドすることで、プログラムの実行速度も非常に速くなります。

強い型の言語として、暗黙の型変換は許可されていません。すべてのものを明示的にするという原則を覚えておいてください。

Go 言語には実際にはいくつかの動的言語の特性もあります(キーワード var を使用して)。そのため、Java や.Net の世界から離れて Python、Ruby、PHP、JavaScript を使用している開発者にも非常に魅力的です。

Go 言語はクロスコンパイルをサポートしており、Linux システムで実行されているコンピュータで Windows で実行されるアプリケーションを開発することができます。これは、UTF-8 を完全にサポートしている最初のプログラミング言語であり、UTF-8 でエンコードされた文字列を処理できるだけでなく、ソースコードファイルの形式も UTF-8 でエンコードされています。Go 言語は本当の意味で国際化されています!

2. 用途#

Go 言語は、Web サーバー、ストレージクラスター、または類似の大規模な中央サーバーに搭載されるアプリケーションのためのシステムプログラミング言語として設計されています。高性能な分散システムの領域では、Go 言語は他の多くの言語よりも開発効率が高いと言えます。大量の並行処理をサポートしており、ゲームサーバーの開発には最適です。

Go 言語の非常に良い目標の 1 つは、複雑なイベント処理(CEP)を実現することです。この技術では、大量の並行処理、高度な抽象化、高性能が必要です。IoT 時代に入ると、CEP は注目されるでしょう。

しかし、Go 言語は一般的な目的にも使用できる言語です。テキスト処理、フロントエンド表示、スクリプトのような使用方法などがあります。

注意すべきは、リアルタイム性の要求が非常に高いソフトウェアの開発には適していないことです。

Google 内部では、Go 言語を使用して大規模な分散アプリケーションが開発されるようになってきています。たとえば、Google Earth の一部のコードは Go 言語で開発されています。

Go 言語を使用して開発された実際のアプリケーションプロジェクトを他の組織がどのように使用しているか知りたい場合は、Go を使用している組織のページをご覧ください。プライバシー保護のため、多くの企業のプロジェクトはこのページに表示されていません。第 21 章では、Go 言語を使用して開発された大規模なストレージエリアネットワーク(SAN)のケーススタディについて説明します。

Chrome ブラウザには、Go 言語のコンパイラが組み込まれており、ネイティブクライアント(NaCl)用に使用されています。これは、Go 言語で開発されたアプリケーションを Chrome OS で実行するために使用される可能性があります。

Go 言語は Intel または ARM プロセッサ上で実行できるため、Android システムで実行することもできます。たとえば、Nexus シリーズの製品などです。

3. 特徴の欠如#

Go 言語では、多くのオブジェクト指向言語で使用できる機能の一部はサポートされていませんが、将来的にサポートされる可能性があります。

デザインを簡素化するため、関数のオーバーロードや演算子のオーバーロードはサポートされていません。
C/C++ の開発におけるいくつかのバグや混乱を避けるため、暗黙の型変換はサポートされていません。
Go 言語は、クラスや型の継承を放棄するために、別の方法でオブジェクト指向設計を実現しています(第 10-11 章)。
インターフェースの使用により、変種型の機能を実現することはできますが、変種型自体はサポートされていません。
コードの動的なロードはサポートされていません。
ダイナミックリンクライブラリはサポートされていません。
ジェネリックはサポートされていません。
例外メカニズムの代わりに recover () と panic () を使用します(第 13.2-13.3 節)。
静的変数はサポートされていません。

結論#

以下に、Go 言語の特徴をいくつか挙げます:

問題の簡略化、学習しやすさ
メモリ管理、シンプルな構文、使いやすさ
高速なコンパイル、効率的な開発
高効率な実行
並行サポート、簡単な制御
静的型
標準ライブラリ、統一された規格
簡単なデプロイメント
包括的なドキュメント
無料でオープンソース

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。