まったりするmatayu

ツイートにゴミがついた感じのブログ

Go modulesを理解する.

大学の講義でGolangを触る機会があって,もう一度Golangをトライしてみたいと思った.

今回は,2年の頃に引っかかってGolangから離れてしまった原因のGo modulesを理解しようと思う.

あの時はgopathとかgo modとかがこんがらがってしまってた.

今だったら理解できるはず...

いろいろやっていく.

syfm.hatenablog.com

gomodules が on の状態:module-aware mode 従来の状態: GOPATH mode

module-aware modeの時とGOPATH mode の時では,go get の挙動が変わる.module-aware modeの時はパッケージが$GOPATH/pkg/mod 以下でバージョン毎に管理され,モジュール内のgo.modとgo.sumが書き換わる.

今現在module-aware mode時のgo getを module-aware go get として言い分けしている.

利用可能なモジュールを集約しているmodule index.利用価値があるものなのかはわからない.

Go modules services

あらゆるモジュールのチェックサムを集約しているsumdbというサービスがある.これのおかげで安全にgo get できてるのか.

golangのモジュールを作ったとして,それを一旦go get できるようにしてしまうと,proxyに保存されて実質永久に残ることになる.

Go 1.13では $GOPROXYという環境変数が使えるようになり,デフォルトでは,https://proxy.golang.org,direct となっている.一旦proxyサーバにgetしに行って,ダメだったらモジュールの提供サーバーへ直接取りに行く感じ.

re-engines.com

goenvなるものがあるらしい!pyenvみたいに使えるのか?入れてみた!

現行は1.14だけどgoenvでインストール可能な最新バージョンは1.12betaまでだった.更新されてないの?

一緒にdirenvというディレクトリ毎に環境変数を設定できるツールが紹介されていた.

brewでインストールできるみたい.覚えておこう.

Go modulesの源泉はGoのメインリポジトリ外で開発が進められたvgo.

go.modファイルを開発者同士で共有すればパッケージのバージョンを揃えた開発が可能になるのか.

パッケージ名はディレクトリ名と同じにするのが通例.

なんか面白そうな記事が紹介されてた.

qiita.com

Golang以外にもawesomeなんちゃらっていうqiitaの記事があるからもし他言語を勉強することがあったらawesomeなんちゃらを探してみよう.

go mod init する時はgo mod init github.com/username/appnameの形が一般的かも.

基本的な動作は blog.golang.org

ここに書いてある.

Go modulesってただのパッケージマネージャーという認識であってるか.

medium.com

go.sumは開発者間で共有すべきファイルである.

go mod edit コマンドでreplaceをgo.modに追記することで,local file path をパッケージの参照先に指定できる.