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


関連記事

docker-syncでファイルの同期を高速化する

1 はじめに2 docker-syncの導入3 設定ファイルの作成3.1 docker-composer.yml3.2 docker-compose-dev.yml3.3 docker-sync.ym ...

【Ruby Advent Calender 2017】Rubyでスクレイピングをしてみる【11日目】

1 はじめに1.1 概要2 仕様3 ソースコード4 使用したモジュール、Gem5 対象ページを取得6 XPATHから目的のものを抜き出す7 次のページのリンクを取得する8 他のサイトの記事でも試してみ ...

Go言語

goroutineとchannelとContext

1 はじめに2 並行処理と並列処理3 goroutine4 channel4.1 channelからデータ受信4.2 for-range でのデータ受信4.3 複数のchannelを受信4.4 buf ...

Stripe Connectで支払方法をクローンする

1 はじめに2 プラットフォームの顧客側の実装2.1 プラットフォームの顧客登録2.2 支払方法の登録3 支払方法クローンの実装3.1 顧客と支払方法のクローン3.1.1 支払方法のクローン3.1.2 ...

rails

Ruby、Railsの時間に関するメソッドを使用してみた

はじめに 普段PHPのお仕事をしています、tonnyです。 半年程前からRuby on Railsの勉強を始めました。 今回はよく使う時間に関するメソッドついてまとめたいと思います。 目次 1 はじめ ...

フォロー

blog-page_side_responsive

2021年10月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

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