Go 1.19.6 Toolset の使用
Go 1.19.6 Toolset のインストールおよび使用
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
特定の文章に関するコメントの送信
- Multi-page HTML 形式でドキュメントを表示し、ページが完全にロードされてから右上隅に Feedback ボタンが表示されていることを確認します。
- カーソルを使用して、コメントを追加するテキスト部分を強調表示します。
- 強調表示されたテキストの近くに表示される Add Feedback ボタンをクリックします。
- フィードバックを追加し、Submit をクリックします。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 Go Toolset リンクのコピーリンクがクリップボードにコピーされました!
Go Toolset は、Red Hat Enterprise Linux (RHEL) の開発者向けの Red Hat 製品です。このツールセットは、Go プログラミング言語のツールとライブラリーを提供します。Go は golang とも呼ばれています。
Go Toolset は、Red Hat Enterprise Linux 8 のモジュールとして利用できます。また、Red Hat Enterprise Linux 9 のパッケージとしても利用できます。
1.1. Go Toolset のコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
次のコンポーネントが Go Toolset の一部として提供されています。
| Name | バージョン | 説明 |
|---|---|---|
| golang | RHEL 7 - 1.5.0 RHEL 8 - 1.5.0 | Go コンパイラー。 |
| delve | RHEL 7 - 1.5.0 RHEL 8 - 1.5.0 | Go デバッガー。 |
1.2. Go Toolset の互換性 リンクのコピーリンクがクリップボードにコピーされました!
Go Toolset は、Red Hat Enterprise Linux 7 および Red Hat Enterprise Linux 8 では、以下のアーキテクチャーで利用できます。
- AMD および Intel 64 ビット
- 64 ビット ARM
- IBM Power Systems、リトルエンディアン
- 64 ビット IBM Z
1.3. Go Toolset のインストール リンクのコピーリンクがクリップボードにコピーされました!
すべての依存パッケージを含む Go Toolset をインストールするには、以下の手順を実行します。
前提条件
- 利用可能な Red Hat Enterprise Linux のすべての更新がインストールされている。
手順
Red Hat Enterprise Linux 8 の場合、以下のコマンドを実行して go-toolset モジュールをインストールします。
yum module install go-toolset
# yum module install go-toolset
Red Hat Enterprise Linux 9 の場合、以下のコマンドを実行して go-toolset パッケージをインストールします。
dnf install go-toolset
# dnf install go-toolset
1.4. Go ドキュメントのインストール リンクのコピーリンクがクリップボードにコピーされました!
Go プログラミング言語のドキュメントは、ローカルシステムにインストールできます。
前提条件
-
Go Toolset がインストールされている。
詳細は、Go Toolset のインストール を参照してください。
手順
golang-docs パッケージをインストールするには、以下のコマンドを実行します。
Red Hat Enterprise Linux 8 の場合
yum install golang-docs
# yum install golang-docsCopy to Clipboard Copied! Toggle word wrap Toggle overflow ドキュメントは、
/usr/lib/golang/doc/go_spec.htmlにあります。Red Hat Enterprise Linux 9 の場合:
dnf install golang-docs
# dnf install golang-docsCopy to Clipboard Copied! Toggle word wrap Toggle overflow ドキュメントは、
/usr/lib/golang/doc/go_spec.htmlにあります。
第2章 Go コンパイラー リンクのコピーリンクがクリップボードにコピーされました!
Go コンパイラーは、Go プログラミング言語のビルドツールおよび依存関係マネージャーです。コードのエラーチェックおよび最適化機能を提供します。
2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
Go Toolset がインストールされている。
詳細は、Go Toolset のインストール を参照してください。
2.2. Go ワークスペースの設定 リンクのコピーリンクがクリップボードにコピーされました!
Go プログラムをコンパイルするには、Go ワークスペースを設定する必要があります。
手順
ワークスペースディレクトリーを
$GOPATH/srcのサブディレクトリーとして作成します。一般的な選択肢は
$HOME/goです。- ソースファイルをワークスペースディレクトリーに配置します。
以下を実行して、ワークスペースディレクトリーの場所を環境変数として
$HOME/.bashrcファイルに設定します。echo 'export GOPATH=<workspace_dir>' >> $HOME/.bashrc source $HOME/.bashrc
$ echo 'export GOPATH=<workspace_dir>' >> $HOME/.bashrc $ source $HOME/.bashrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow <workspace_dir> は、ワークスペースディレクトリーの名前に置き換えます。
2.3. Go プログラムのコンパイル リンクのコピーリンクがクリップボードにコピーされました!
Go コンパイラーを使用すると、Go プログラムをコンパイルできます。Go コンパイラーは、コンパイルの結果として、実行可能なバイナリーファイルを作成します。
前提条件
-
モジュールが設定された Go ワークスペースが設定されている。
ワークスペースの設定方法は、Go ワークスペースの設定 を参照してください。
手順
プロジェクトディレクトリーで以下を実行します。
Red Hat Enterprise Linux 8 の場合
go build -o <output_file> <go_main_package>
$ go build -o <output_file> <go_main_package>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<output_file>は出力ファイルの名前に、<go_main_package>はメインパッケージの名前に置き換えます。
-
Red Hat Enterprise Linux 9 の場合:
go build -o <output_file> <go_main_package>
$ go build -o <output_file> <go_main_package>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<output_file>は出力ファイルの名前に、<go_main_package>はメインパッケージの名前に置き換えます。
-
2.4. Go プログラムの実行 リンクのコピーリンクがクリップボードにコピーされました!
Go コンパイラーは、コンパイルの結果として、実行可能なバイナリーファイルを作成します。このファイルを実行し、プログラムを実行するには、以下の手順を実行します。
前提条件
-
プログラムがコンパイルされている。
プログラムをコンパイルする方法は、Go プログラムのコンパイル を参照してください。
手順
プログラムを実行するには、実行ファイルが含まれるディレクトリーで実行します。
./<file_name>
$ ./<file_name>
-
<file_name>は、実行ファイルの名前に置き換えます。
2.5. コンパイル済み Go プロジェクトのインストール リンクのコピーリンクがクリップボードにコピーされました!
コンパイル済みの Go プロジェクトをインストールすると、その実行ファイルとライブラリーを他の Go プロジェクトで使用できます。インストール後、プロジェクトの実行ファイルとライブラリーは、Go ワークスペースのディレクトリーに従ってコピーされます。その依存関係もインストールされます。
前提条件
-
モジュールが設定された Go ワークスペース。
詳細は、Go ワークスペースの設定 を参照してください。
手順
Go プロジェクトをインストールするには、以下を実行します。
Red Hat Enterprise Linux 8 の場合
go install <go_project>
$ go install <go_project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<go_project>は、インストールする Go プロジェクトの名前に置き換えます。
-
Red Hat Enterprise Linux 9 の場合:
go install <go_project>
$ go install <go_project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<go_project>は、インストールする Go プロジェクトの名前に置き換えます。
-
2.6. Go プロジェクトのダウンロードおよびインストール リンクのコピーリンクがクリップボードにコピーされました!
オンラインリソースからサードパーティーの Go プロジェクトをダウンロードしてインストールすると、その実行ファイルとライブラリーを他の Go プロジェクトで使用できます。インストール後、プロジェクトの実行ファイルとライブラリーは、Go ワークスペースのディレクトリーに従ってコピーされます。その依存関係もインストールされます。
前提条件
-
Go ワークスペース。
詳細は、Go ワークスペースの設定 を参照してください。
手順
Go プロジェクトをダウンロードしてインストールするには、以下を実行します。
Red Hat Enterprise Linux 8 の場合
go install <third_party_go_project>
$ go install <third_party_go_project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<third_party_go_project>は、ダウンロードするプロジェクトの名前に置き換えます。
-
Red Hat Enterprise Linux 9 の場合:
go install <third_party_go_project>
$ go install <third_party_go_project>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<third_party_go_project>は、ダウンロードするプロジェクトの名前に置き換えます。
-
サードパーティープロジェクトで使用可能な値を確認するには、以下を実行します。
Red Hat Enterprise Linux 8 の場合
go help importpath
$ go help importpathCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Enterprise Linux 9 の場合
go help importpath
$ go help importpathCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 gofmt フォーマットツール リンクのコピーリンクがクリップボードにコピーされました!
Go プログラミング言語は、スタイルガイドではなく、gofmt コードフォーマットツールを使用します。gofmt は、Go レイアウトルールに従ってコードを自動的にフォーマットします。
3.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
Go Toolset がインストールされている。
詳細は、Go Toolset のインストール を参照してください。
3.2. コードのフォーマット リンクのコピーリンクがクリップボードにコピーされました!
gofmt フォーマットツールを使用して、特定のパス内のコードをフォーマットできます。パスが 1 つのファイルである場合、変更はファイルにのみ適用されます。パスがディレクトリーである場合、ディレクトリー内のすべての .go ファイルが処理されます。
手順
特定のパス内のコードをフォーマットするには、以下を実行します。
Red Hat Enterprise Linux 8 の場合
gofmt -w <code_path>
$ gofmt -w <code_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<code_path>は、フォーマットするコードへのパスに置き換えます。
-
Red Hat Enterprise Linux 9 の場合:
gofmt -w <code_path>
$ gofmt -w <code_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<code_path>は、フォーマットするコードへのパスに置き換えます。
-
元のファイルに書き込みせずにフォーマットされたコードを標準出力に出力するには、-w オプションを省略します。
3.3. コードの変更のプレビュー リンクのコピーリンクがクリップボードにコピーされました!
gofmt フォーマットツールを使用して、特定のパス内のコードをフォーマットすることによって行われた変更をプレビューできます。統一された diff 形式の出力が、標準出力に出力されます。
手順
特定のパス内のコードの違いを表示するには、以下を実行します。
Red Hat Enterprise Linux 8 の場合
gofmt -w -d <code_path>
$ gofmt -w -d <code_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<code_path>は、比較するコードへのパスに置き換えます。
-
Red Hat Enterprise Linux 9 の場合:
gofmt -w -d <code_path>
$ gofmt -w -d <code_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<code_path>は、比較するコードへのパスに置き換えます。
-
3.4. コードの簡素化 リンクのコピーリンクがクリップボードにコピーされました!
gofmt フォーマットツールを使用して、コードを簡素化できます。
手順
特定のパス内の anf 形式のコードを簡素化するには、以下を実行します。
Red Hat Enterprise Linux 8 の場合
gofmt -s -w <code_path>
$ gofmt -s -w <code_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<code_path>は、簡素化するコードへのパスに置き換えます。
-
Red Hat Enterprise Linux 9 の場合:
gofmt -s -w <code_path>
$ gofmt -s -w <code_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<code_path>は、簡素化するコードへのパスに置き換えます。
-
3.5. コードのリファクタリング リンクのコピーリンクがクリップボードにコピーされました!
gofmt フォーマットツールを使用して、任意の置換を適用してコードをリファクタリングできます。
手順
特定のパスにコードをリファクタリングしてフォーマットするには、以下を実行します。
Red Hat Enterprise Linux 8 の場合
gofmt -r -w <rewrite_rule> <code_path>
$ gofmt -r -w <rewrite_rule> <code_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<code_path>はリファクタリングするコードへのパスに、<rewrite_rule>はコードを書き換えるルールに置き換えます。
-
Red Hat Enterprise Linux 9 の場合:
gofmt -r -w <rewrite_rule> <code_path>
$ gofmt -r -w <rewrite_rule> <code_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<code_path>はリファクタリングするコードへのパスに、<rewrite_rule>はコードを書き換えるルールに置き換えます。
-
第4章 Go 競合検出 リンクのコピーリンクがクリップボードにコピーされました!
Go Toolset には、競合状態を検出する Go 標準ライブラリーのツールである Go 競合検出ツールが含まれています。
競合検出を使用すると、ランタイムリソースのオーバーヘッドが著しく増大することに注意してください。
4.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
-
Go Toolset がインストールされている。
詳細は、Go Toolset のインストール を参照してください。
4.2. Go 競合検出の使用 リンクのコピーリンクがクリップボードにコピーされました!
Go 競合検出を使用して、競合状態のコードを確認します。
手順
競合検出を使用するには、以下を実行します。
Red Hat Enterprise Linux 8 の場合
go build -race -o <output_file> <go_main_package>
$ go build -race -o <output_file> <go_main_package>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<output_file>は実行ファイルの名前に、<go_main_package>はテストするパッケージ名に置き換えます。
-
Red Hat Enterprise Linux 9 の場合:
go build -race -o <output_file> <go_main_package>
$ go build -race -o <output_file> <go_main_package>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<output_file>は実行ファイルの名前に、<go_main_package>はテストするパッケージ名に置き換えます。
-
第5章 Go Toolset が組み込まれたコンテナーイメージ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux コンテナーイメージまたは Red Hat Universal Base Images (UBI) から独自の Go Toolset コンテナーをビルドできます。
5.1. Red Hat Enterprise Linux Go Toolset コンテナーイメージのコンテンツ リンクのコピーリンクがクリップボードにコピーされました!
Go Toolset の Red Hat Enterprise Linux 8 および Red Hat Enterprise Linux 9 コンテナーイメージには、以下のパッケージが含まれています。
| コンポーネント | バージョン | パッケージ |
|---|---|---|
|
| 1.20 | RHEL 7 - go-toolset-1.15.11 RHEL 8 - go-toolset-1.15.7 |
5.2. Red Hat Enterprise Linux コンテナーイメージへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
コンテナーを実行し、アクションを実行する前に、Red Hat レジストリーからコンテナーイメージをプルします。
手順
必要なイメージをプルするには、以下を実行します。
Red Hat Enterprise Linux 8 をベースとするイメージの場合:
podman pull registry.redhat.io/rhel8/go-toolset
# podman pull registry.redhat.io/rhel8/go-toolsetCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Enterprise Linux 9 をベースとするイメージの場合:
podman pull registry.redhat.io/rhel9/go-toolset
# podman pull registry.redhat.io/rhel9/go-toolsetCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. RHEL 8 での UBI Go Toolset コンテナーイメージへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8 では、UBI Go Toolset コンテナーイメージをインストールして Go Toolset にアクセスします。
または、Go Toolset を RHEL8 ベースの UBI コンテナーイメージにインストールすることもできます。詳細は、RHEL 8 のベース UBI コンテナーイメージから Go Toolset にアクセスする を参照してください。
手順
Red Hat レジストリーから UBI Go Toolset コンテナーイメージをプルするには、以下を実行します。
podman pull registry.access.redhat.com/ubi8/go-toolset
# podman pull registry.access.redhat.com/ubi8/go-toolset
5.4. RHEL 8 のベース UBI コンテナーイメージから Go Toolset にアクセスする リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8 では、Go Toolset パッケージは Red Hat Universal Base Images (UBI) リポジトリーの一部です。つまり、ベース UBI コンテナーイメージへの追加として Go Toolset をインストールできます。コンテナーイメージのサイズを小さくするには、Go Toolset 全体ではなく、個々のパッケージだけをインストールします。
または、UBI Go Toolset コンテナーイメージをインストールして、Go Toolset にアクセスすることもできます。詳細は、RHEL 8 での UBI Go Toolset コンテナーイメージへのアクセス を参照してください。
前提条件
-
既存の Containerfile がある。
Containerfiles 作成の詳細は、Dockerfile reference のページを参照してください。
手順
- Go Toolset を含むコンテナーイメージを作成するには、以下の行を Containerfile に追加します。
FROM registry.access.redhat.com/ubi8/ubi:latest RUN yum module install -y go-toolset
FROM registry.access.redhat.com/ubi8/ubi:latest
RUN yum module install -y go-toolset
個々のパッケージのみを含むコンテナーイメージを作成するには、以下の行を Containerfile に追加します。
RUN yum install -y <package-name>
RUN yum install -y <package-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
<package-name>をインストールするパッケージの名前に置き換えます。
-
第6章 Go Toolset の変更点 リンクのコピーリンクがクリップボードにコピーされました!
Rust ツールセットが、RHEL 7 および RHEL 8 のバージョン 1.52.1 から 1.54.0 に更新されました。
主な変更点は、以下のとおりです。
-
内部表現に依存せずにスライスと文字列を処理するための新しい関数が
unsafeパッケージに追加されました。 - 比較可能な型は、比較可能な制約を満たすことができるようになりました。
-
新しい
crypto/ecdhパッケージ。 -
go buildおよびgo testコマンドは、-iフラグを受け入れなくなりました。 -
go generateおよびgo testコマンドは、-skip patternオプションを受け入れるようになりました。 -
go build、go install、およびその他のビルド関連コマンドは、-pgoフラグと-coverフラグをサポートするようになりました。 -
goコマンドは、C ツールチェーンのないシステムではデフォルトでcgoを無効にするようになりました。 -
go version -mコマンドは、より多くの Go バイナリータイプの読み取りをサポートするようになりました。 -
goコマンドは、C ツールチェーンのないシステムではデフォルトでcgoを無効にするようになりました。 - コードカバレッジプロファイルを単体テストからのみ収集するのではなく、アプリケーションと統合テストから収集するためのサポートが追加されました。