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


関連記事

laravel logo

PHPで画像編集~Intervention Image~

1 はじめに2 やる事3 インストール4 画像読み込み5 文字列の追加6 編集した画像の保存7 実際のコード8 他に使う機会がありそうな編集8.1 モザイク8.2 ぼやけ8.3 リサイズ9 さいご10 ...

rails

ShrineでS3に画像をアップロードする

1 はじめに1.1 前提条件1.2 関連記事2 AWS側の準備2.1 S3バケットを作成する2.2 CORSを設定する2.3 アクセス用のユーザを作成する3 Rails側の設定3.1 Initiali ...

PHPerだけどKotlinを勉強したって良いよね その2〜コンストラクタ編〜

1 はじめに2 コンストラクタ2.1 プライマリコンストラクタ2.2 セカンダリコンストラクタ2.3 ニックネームのみを入力した人2.4 ニックネームと email を入力した人2.5 Faceboo ...

WebアプリからLINEのメッセージを送る方法

1 はじめに2 Messaging APIとは2.1 Messaging APIの仕組み2.2 Webhookイベント2.3 メッセージオブジェクトの種類2.4 料金形態3 LINE Develope ...

[Dialogflow + CF] アクア様が罵倒してくれたり天気を教えてくれるSlackボットを作る

1 はじめに2 Dialogflowの準備2.1 プロジェクトを作る2.2 Intentを作る2.3 試してみる2.4 WELCOME Intentを作る3 Slackボットを作る4 名前を答える5 ...

フォロー

blog-page_side_responsive

2021年10月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

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