Go 1.10以前はGOPATHと呼ばれるパスの配下にソースコードを置いてパッケージを管理していた
バージョン機能などはなくgo getをするとgo1のタグブランチかmasterからコードを取得していた
または、GlideやDepなどのサードパーティー製のバージョン管理ツールを使用して管理をしていた
今回、Go modulesではGoコマンド本体に公式のバージョン管理ツールが実装された
主な特徴としてはGOPATH外でソースコードの管理を行えるようになったりVersion選択にMinimal Version selection, Version表現にSemantic Import Versioningなどのアルゴリズムが採用されたことである
Go コマンドではgo modというバージョン管理用のサブコマンドが追加されこれによってmoduleの管理を行う
また、depやGlideなどを使っている既存のプロジェクトもmodコマンドによってmoduleを使った管理方法に簡単に移行できる
go modはプロジェクトルートに置かれたgo.modファイルによってパッケージの依存関係の管理を行う