BackEnd

Go 1.16でのgo getとgo installの変更点

投稿日:2021年10月11日 更新日:

はじめに

Go 1.16 から、 go getgo install の役割が明確に分かれました。今回は、 Go 1.16 からこれらのコマンドがどのように変わったかを紹介します。

go getとgo installの役割

大雑把に分けると、 go getgo.mod を編集するためのコマンドに、 go install はバイナリのビルド、インストールのためのコマンドにと、役割が分かれました。

次からは、それぞれのコマンドについて、もっと詳しく見ていきます。

go getの役割

go getgo.mod の編集と依存関係の解決を行います。

ちなみに、 Go 1.16 の段階では、まだバイナリのインストールまで行われます(1.17ではインストール時に警告がでるようになり、1.18ではインストール機能が削除される予定です)

なお、コードにimport文を書いてから go mod tidy を実行するれば、不要なモジュールの削除と新規のモジュールの追加が行われるので、 go get は使わなくても良いかもしれません。

go installの役割

go install はバイナリのインストールを行います。下記のように、パッケージ名とバージョンの指定が必須です(最新版をインストールする場合は latest でも可)

go install すると $GOPATH/bin/ にダウンロードされます。

このように、 go install では go.mod の変更が行われません。

この変更で何が改善されたのか

この変更で具体的に何が改善されたのかというと、変更以前はグローバルにツールをインストールするには、 go get コマンドが使用されていましたが、上でも書いたとおり、 go get コマンドは go.mod の編集も兼ねているため、不用意な go.mod の更新が行われる可能性がありました。

go.mod を変更せずにツールだけインストールするには以下の手順が必要でした。

  1. go.mod のあるディレクトリから抜ける
  2. ツール側の go.mod を有効化する
  3. go get を実行する

実際のコマンドは下記のようになります。

これを毎回実行する必要がありました。それに比べると、 go install コマンド一発で済むようになったのはありがたいですね。

go:generateと併用する

go:generate で外部パッケージを直接実行するには、以下のように記述する必要があります。

さらに、 Go 1.17 からは、外部パッケージを直接実行できるようになったので、以下のように書くことができます。

その他のgo.mod関連の変更点

Go 1.16 では、 go buildgo test を実行した際に、自動で go.mod が変更されなくなりました。import文を変更した場合は go mod tidy を実行しておきましょう。

さいごに

今回は、 Go 1.16 から go getgo install がどのように変わったかを紹介しました。

おすすめ書籍

改訂2版 みんなのGo言語 スターティングGo言語 (CodeZine BOOKS)

blog-page_footer_336




blog-page_footer_336




-BackEnd
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

Stripe Connectを使って複合プランの継続課金を実装

1 はじめに1.1 想定する継続課金1.2 想定するシチュエーション2 継続課金商品の作成2.1 プランの継続課金商品の作成2.2 ID数の継続課金商品の作成3 実装3.1 プランAとID数を30契約 ...

Go言語

Go 1.19でGoDocに追加された機能

1 はじめに2 GoDocの機能追加2.1 セクションタイトル(Headings)2.2 リンク2.3 リスト2.4 パッケージの追加3 おまけ4 さいごに5 おすすめ書籍 はじめに 8月2日にGo ...

Rust入門してみた その3 Enum / match / Option編

1 はじめに2 Enum2.1 Enumの定義2.2 パターンマッチ2.3 Enumへのメソッド実装3 よく使う標準Enum3.1 Option3.2 Result4 おすすめ書籍 はじめに 前回に引 ...

Stripe Connectを使って継続課金にクーポンを適用する

1 はじめに2 クーポンについて2.1 クーポンのタイプ2.2 期間2.3 引き換え回数制限2.4 その他3 クーポンの作成4 クーポンの使用4.1 定期支払にクーポンを適用4.2 Checkoutで ...

laravel logo

Laravel-debugerbarを使ってみた

1 はじめに2 インストール3 主な項目3.1 Messages3.2 Timeline3.3 Queries3.4 N+1 Queries3.5 Session3.6 Request4 さいごに5 ...

フォロー

blog-page_side_responsive

2021年10月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。