ブログに戻る

Goでパッケージをインポートする方法

Goでパッケージをインポートする方法

Go(Golangとしても知られています) は、オープンソースの静的型付けプログラミング言語です。元々はGoogleによって開発されました。Goの主な特徴としては、シンプルさ、高いパフォーマンス、可読性、そして効率性が挙げられます。

他の主要なプログラミング言語と同様に、Goの標準ライブラリは豊富なパッケージ群を提供しています。しかし、サードパーティのパッケージを取り入れることで、機能を拡張することもできます。このガイドでは、 パッケージをインポートしてGoプロジェクトに組み込む方法を説明します。

前提条件

このガイドに従うには、以下のコンポーネントを手元に用意しておく必要があります。

ステップ1 – Goのインストール

コアとなる Ubuntu 20.04へのGoプログラミング言語のインストールについてはすでに説明しました。しかし、より簡単な代替方法があります: g  (軽量なGoバージョンマネージャー).

私たちが g  を使用する理由は、Ubuntuのパッケージリポジトリやsnapから利用可能なGoのバージョンのいずれも、利用可能な最新のGoバージョン(v1.18、このガイドの執筆時点)ではないためです。プログラミング言語のパッケージは、常に利用可能な最新バージョンを使用することをお勧めします。

次のコマンドを実行すると、 g  インストールスクリプトが実行されます:

Import Packages in Go install go

Import Packages in Go installing go 2

変更を反映させるには、シェルセッションを再起動する必要があります。再起動後、インストールを確認します:

Import Packages in Go check go version

Goをインストールした後は、 gopls  のインストールもお勧めします。これは公式のGo言語サーバーです。VS Code、Vim、Emacs、Sublime Text、Atomなど、多くのテキストエディタと互換性があります。次のコマンドを実行してください:

これでGoプログラミング環境の準備が整いました。

ステップ2 – サンプルGoスクリプトの作成

このガイドで説明するすべてのコードは、単一のGoスクリプトに収まります。サンプルGoスクリプトを作成します:

スクリプトに変更を加えた後、次のGoコマンドを使用して実行できます:

ここで、Goコンパイラはコードをインタプリタモードで実行します。

ステップ3 – 標準ライブラリパッケージの使用

Goの標準ライブラリには膨大なコレクションが付属しています。これには、例えば以下のような多数のパッケージが含まれています:

  • fmt:C言語の( printf  および scanf ).
  • http:このパッケージは、Webサービスの作成、 http  プロトコルを介したデータの送受信などの機能を提供します。

Goプロジェクトにパッケージを組み込むには、 import  ステートメントを使用して実装する必要があります。このステートメントは、 import  キーワードとパッケージ名で宣言されます。例えば、 math/rand  をインポートする場合、インポートステートメントは次のようになります:

次のコードは、 math/rand  パッケージのさまざまな機能を実装しています:

このコードは、10個のランダムな整数(0から24)を画面に出力するシンプルなforループを示しています。ここで:

  • rand.Int() :この関数呼び出しはランダムな整数を返します。
  • rand.Intn()rand.Int()  と同様に動作しますが、ランダムな整数の範囲(0から指定された数値まで)を定義するパラメータを受け取ります。

次に、コードを実行します:

出力は次のようになります:

random number program

デフォルトでは乱数生成器のシード値が固定されているため、出力はまったく同じになることに注意してください。これは、 疑似乱数生成器の性質です。. 詳細については、 ランダムシードについてこちらをご覧ください.

ステップ 4 – 複数のパッケージのインポート

より規模が大きく複雑なプロジェクトでは、複数のパッケージを組み込む必要があります。それらをGoコードにどのようにインポートすればよいでしょうか? 有効な選択肢の1つは、インポートするパッケージごとに個別のimportステートメントを使用することです。しかし、このアプローチは、次のインポート構造と比較すると非効率的です。

ここでは、単一のimportステートメントで同時に複数のパッケージを組み込んでいます。これにより、記述する必要のあるコードの量が削減され、可読性が向上します。

次のコードは、この機能を実際に動作させるものです。

コードを実行します:

出力は次のようになります:

importing multiple packages

ステップ 5 – 追加のGoライブラリのインストール

Goの標準ライブラリには、数多くの便利なパッケージが付属しています。これらは設計上、汎用的なものです。開発者は標準ライブラリの上に独自のパッケージを作成し、特定のニーズを満たすことができます。公式の Goパッケージデータベース.

サードパーティのGoパッケージを実装する必要がある場合はどうすればよいでしょうか? Goには go install コマンドが付属しています( go get は非推奨になりました)。インターネットから任意のサードパーティ製Goパッケージを取得できます。

デモンストレーションとして、次のパッケージをインストールします: cobra-cli パッケージ。次のGoコマンドは、必要なファイルをダウンロードしてインストールし、パッケージをGoライブラリシステムに統合します。

install cobra cli

The binary of cobra-cli のバイナリは、次の場所に配置されているはずです:

list gopath files

その他のパッケージファイルは、次の場所に配置されているはずです:

list package files

Go v1.11以降、Goモジュールはインポートするパッケージのバージョンを定義します。これについては、こちらで詳しく説明されています: Go Modules GitHub.

ステップ 6 – パッケージのエイリアス

さまざまな状況において、ローカルパッケージとインポートされたパッケージの間でパッケージ名が競合することがあります。このような場合に、エイリアスを使用することで衝突を解決できます。エイリアスの構造は次のようになります:

シンプルなGoプログラムを変更して、 fmt_alias をパッケージ fmt のエイリアスとして組み込んでみましょう。 :

Notice that instead of using fmt.Printf() を使用する代わりに、パッケージエイリアスである fmt_alias.Printf を使用していることに注意してください。() .

しかし、Goは エイリアスをあまり歓迎していません。インポート名の衝突を避けるためにエイリアスを使用する場合、最もローカルな、またはプロジェクト固有のインポートにエイリアスを付けることが推奨されます。たとえば、ローカルパッケージの strings とシステムパッケージの strings の両方を用意したい場合は、システムパッケージではなくローカルパッケージにエイリアスを付ける必要があります。

ベストプラクティスは、そもそも名前の衝突を避けることです。

ステップ 7 – インポートのフォーマット

単一の import ステートメントを使用してすべてのインポートを宣言することを学びました。複数のインポートがある場合はどうなるでしょうか? 例えば:

インポートのフォーマットは、パッケージを特定の順序にソートし、コードの一貫性を向上させます。インポートの順序のみをソートするため、ランダムなコミットを防ぐこともできます。また、不要なコードの混乱や、紛らわしいコードレビューを防ぐこともできます。

ほとんどの最新のエディタは、インポートを自動的にフォーマットしてくれます。あるいは、以下をサポートしています。 goimports。業界では、手動でインポートをソートする代わりに、 goimports を使用するのが一般的な慣行です。さらに、 goimports はコードのスタイル変更も反映します。

以下は、 import ブロックに goimports :

何かパターンに気づきましたか?

  • すべての標準ライブラリが最初にグループ化されています。
  • グループは空行で区切られており、コードの可読性が向上しています。

最後に

Goにおけるインポートは、Goに組み込まれていない関数を呼び出すことができる強力な機能です。標準ライブラリは多くの汎用パッケージを提供していますが、Goはサードパーティのパッケージもサポートしています。このガイドでは、組み込みおよびサードパーティのGoパッケージをインポートする方法を説明しました。

このガイドでは、インタプリタを使用してGoプログラムを実行しました。しかし、パフォーマンスを向上させるために、コードをスタンドアロンのバイナリにコンパイルすることもできます。詳細については、Goプログラムのコンパイル方法をご覧ください。また、Nginxを使用してGoウェブアプリケーションをデプロイする方法については、このチュートリアルを確認してください。さらに、独自のGoパッケージを作成する方法を紹介するガイドもご覧いただけます。.

あなたはGo開発者ですか? CloudSigmaはGo APIのサポートを提供しています。プロジェクトとのシームレスな統合にぜひご活用ください。

快適なコンピューティングを!

author

Preslav Dobrev

著者 · CloudSigma

Preslav DobrevはCloudSigmaのクリエイティブデザイナーであり、従来型および革新的なマーケティングチャネルを活用した一貫性のあるビジネスアイデンティティに注力しています。彼は芸術的なビジョンと戦略的マーケティングを融合させ、インパクトのあるブランドナラティブを生み出すことに長けています。

コメント

コメントはまだありません。最初のコメントを投稿しましょう。