Go(Golangとしても知られています) は、オープンソースの静的型付けプログラミング言語です。元々はGoogleによって開発されました。Goの主な特徴としては、シンプルさ、高いパフォーマンス、可読性、そして効率性が挙げられます。
他の主要なプログラミング言語と同様に、Goの標準ライブラリは豊富なパッケージ群を提供しています。しかし、サードパーティのパッケージを取り入れることで、機能を拡張することもできます。このガイドでは、 パッケージをインポートしてGoプロジェクトに組み込む方法を説明します。
前提条件
このガイドに従うには、以下のコンポーネントを手元に用意しておく必要があります。
- 適切に設定されたUbuntuサーバー。詳細については、 CloudSigmaでのUbuntuサーバーの設定方法.
- Goプログラミング環境。こちらのガイドを利用できます: UbuntuへのGoのインストール.
- モダンなテキストエディタ。例えば、 Vim, Sublime Text, Atom, Visual Studio Code, Bracketsなど。このガイドでは、 Visual Studio Code .
ステップ1 – Goのインストール
コアとなる Ubuntu 20.04へのGoプログラミング言語のインストールについてはすでに説明しました。しかし、より簡単な代替方法があります: g (軽量なGoバージョンマネージャー).
私たちが g を使用する理由は、Ubuntuのパッケージリポジトリやsnapから利用可能なGoのバージョンのいずれも、利用可能な最新のGoバージョン(v1.18、このガイドの執筆時点)ではないためです。プログラミング言語のパッケージは、常に利用可能な最新バージョンを使用することをお勧めします。
次のコマンドを実行すると、 g インストールスクリプトが実行されます:
|
1 |
wget -qO- https://git.io/g-install | sh -s |


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

Goをインストールした後は、 gopls のインストールもお勧めします。これは公式のGo言語サーバーです。VS Code、Vim、Emacs、Sublime Text、Atomなど、多くのテキストエディタと互換性があります。次のコマンドを実行してください:
|
1 |
go install golang.org/x/tools/gopls@latest |
これでGoプログラミング環境の準備が整いました。
ステップ2 – サンプルGoスクリプトの作成
このガイドで説明するすべてのコードは、単一のGoスクリプトに収まります。サンプルGoスクリプトを作成します:
|
1 |
touch practice.go |
スクリプトに変更を加えた後、次のGoコマンドを使用して実行できます:
|
1 |
go run practice.go |
ここで、Goコンパイラはコードをインタプリタモードで実行します。
ステップ3 – 標準ライブラリパッケージの使用
Goの標準ライブラリには膨大なコレクションが付属しています。これには、例えば以下のような多数のパッケージが含まれています:
Goプロジェクトにパッケージを組み込むには、 import ステートメントを使用して実装する必要があります。このステートメントは、 import キーワードとパッケージ名で宣言されます。例えば、 math/rand をインポートする場合、インポートステートメントは次のようになります:
|
1 |
import "math/rand" |
次のコードは、 math/rand パッケージのさまざまな機能を実装しています:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package main import "math/rand" func main() { for i := 0; i < 10; i++ { println(rand.Intn(25)) } } |
このコードは、10個のランダムな整数(0から24)を画面に出力するシンプルなforループを示しています。ここで:
- rand.Int() :この関数呼び出しはランダムな整数を返します。
- rand.Intn() : rand.Int() と同様に動作しますが、ランダムな整数の範囲(0から指定された数値まで)を定義するパラメータを受け取ります。
次に、コードを実行します:
|
1 |
go run practice.go |
出力は次のようになります:

デフォルトでは乱数生成器のシード値が固定されているため、出力はまったく同じになることに注意してください。これは、 疑似乱数生成器の性質です。. 詳細については、 ランダムシードについてこちらをご覧ください.
ステップ 4 – 複数のパッケージのインポート
より規模が大きく複雑なプロジェクトでは、複数のパッケージを組み込む必要があります。それらをGoコードにどのようにインポートすればよいでしょうか? 有効な選択肢の1つは、インポートするパッケージごとに個別のimportステートメントを使用することです。しかし、このアプローチは、次のインポート構造と比較すると非効率的です。
|
1 2 3 4 5 6 7 8 9 |
import ( "<package_1>" "<package_2>" "<package_3>" ) |
ここでは、単一のimportステートメントで同時に複数のパッケージを組み込んでいます。これにより、記述する必要のあるコードの量が削減され、可読性が向上します。
次のコードは、この機能を実際に動作させるものです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package main import ( "fmt" "math/rand" ) func main() { for i := 0; i < 10; i++ { fmt.Printf("%d) %d\n", i, rand.Intn(25)) } } |
コードを実行します:
|
1 |
go run practice.go |
出力は次のようになります:

ステップ 5 – 追加のGoライブラリのインストール
Goの標準ライブラリには、数多くの便利なパッケージが付属しています。これらは設計上、汎用的なものです。開発者は標準ライブラリの上に独自のパッケージを作成し、特定のニーズを満たすことができます。公式の Goパッケージデータベース.
サードパーティのGoパッケージを実装する必要がある場合はどうすればよいでしょうか? Goには go install コマンドが付属しています( go get は非推奨になりました)。インターネットから任意のサードパーティ製Goパッケージを取得できます。
デモンストレーションとして、次のパッケージをインストールします: cobra-cli パッケージ。次のGoコマンドは、必要なファイルをダウンロードしてインストールし、パッケージをGoライブラリシステムに統合します。
|
1 |
go install github.com/spf13/cobra-cli@latest |

The binary of cobra-cli のバイナリは、次の場所に配置されているはずです:
|
1 |
ls -l $GOPATH/bin |

その他のパッケージファイルは、次の場所に配置されているはずです:
|
1 |
ls -l $GOPATH/pkg/mod/github.com/spf13 |

Go v1.11以降、Goモジュールはインポートするパッケージのバージョンを定義します。これについては、こちらで詳しく説明されています: Go Modules GitHub.
ステップ 6 – パッケージのエイリアス
さまざまな状況において、ローカルパッケージとインポートされたパッケージの間でパッケージ名が競合することがあります。このような場合に、エイリアスを使用することで衝突を解決できます。エイリアスの構造は次のようになります:
|
1 |
import <alias> "import_package_name" |
シンプルなGoプログラムを変更して、 fmt_alias をパッケージ fmt のエイリアスとして組み込んでみましょう。 :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package main import ( fmt_alias "fmt" "math/rand" ) func main() { for i := 0; i < 10; i++ { fmt_alias.Printf("%d) %d\n", i, rand.Intn(25)) } } |
Notice that instead of using fmt.Printf() を使用する代わりに、パッケージエイリアスである fmt_alias.Printf を使用していることに注意してください。() .
しかし、Goは エイリアスをあまり歓迎していません。インポート名の衝突を避けるためにエイリアスを使用する場合、最もローカルな、またはプロジェクト固有のインポートにエイリアスを付けることが推奨されます。たとえば、ローカルパッケージの strings とシステムパッケージの strings の両方を用意したい場合は、システムパッケージではなくローカルパッケージにエイリアスを付ける必要があります。
ベストプラクティスは、そもそも名前の衝突を避けることです。
ステップ 7 – インポートのフォーマット
単一の import ステートメントを使用してすべてのインポートを宣言することを学びました。複数のインポートがある場合はどうなるでしょうか? 例えば:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import ( "fmt" "os" "github.com/example/foo" "github.com/example/bar" "math/rand" "github.com/abc/pqr/xyz" ) |
インポートのフォーマットは、パッケージを特定の順序にソートし、コードの一貫性を向上させます。インポートの順序のみをソートするため、ランダムなコミットを防ぐこともできます。また、不要なコードの混乱や、紛らわしいコードレビューを防ぐこともできます。
ほとんどの最新のエディタは、インポートを自動的にフォーマットしてくれます。あるいは、以下をサポートしています。 goimports。業界では、手動でインポートをソートする代わりに、 goimports を使用するのが一般的な慣行です。さらに、 goimports はコードのスタイル変更も反映します。
以下は、 import ブロックに goimports :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import ( fmt_alias "fmt" "math/rand" "os" "github.com/example/foo" "github.com/example/bar" "github.com/abc/pqr/xyz" ) |
何かパターンに気づきましたか?
- すべての標準ライブラリが最初にグループ化されています。
- グループは空行で区切られており、コードの可読性が向上しています。
最後に
Goにおけるインポートは、Goに組み込まれていない関数を呼び出すことができる強力な機能です。標準ライブラリは多くの汎用パッケージを提供していますが、Goはサードパーティのパッケージもサポートしています。このガイドでは、組み込みおよびサードパーティのGoパッケージをインポートする方法を説明しました。
このガイドでは、インタプリタを使用してGoプログラムを実行しました。しかし、パフォーマンスを向上させるために、コードをスタンドアロンのバイナリにコンパイルすることもできます。詳細については、Goプログラムのコンパイル方法をご覧ください。また、Nginxを使用してGoウェブアプリケーションをデプロイする方法については、このチュートリアルを確認してください。さらに、独自のGoパッケージを作成する方法を紹介するガイドもご覧いただけます。.
あなたはGo開発者ですか? CloudSigmaはGo APIのサポートを提供しています。プロジェクトとのシームレスな統合にぜひご活用ください。
快適なコンピューティングを!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。