新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

Go言語でローカルパッケージを使う方法(Go Moludes)

Golangでプログラムを書いていて、プログラムが長くなってきたので、パッケージに分けてみました。

構成

ディレクトリ構成は下記のような感じ。

.
|-- a
|   `-- a.go
|-- b
|   `-- b.go
`-- main.go

手順

方針

Go Modules を使って、プログラムを1つのモジュールにして、モジュールからのパスでパッケージを指定します。

モジュール設定

プログラムを適当な名前でモジュールにします。

go mod init test-module

ディレクトリにgo.modというファイルが作成されます。

module test-module

go 1.14

使い方

importから「<モジュール名>/<パッケージ名>」で読み込みます。

package main

import(
    "test-module/a"
    "test-module/b"
)

func main(){
    a.Test()
    b.Test()
}

Go Modulesって便利だなぁ

Go Modulesは、そのプログラムが使うパッケージをまとめて管理する機能のようです。

go getで1つ1つimportしたパッケージのインストールをしなくても、go buildimportに記載されいているパッケージを、自動でインストールしてくれるのでとても便利です!(go getによるインストールも可能です)

go getgo buildでパッケージがインストールされると、go.modファイルに追記されていきます。

go.modファイルがあれば、ビルド時にそこに記載されているパッケージを自動でインストールしてくれるので、Dockerなど、パッケージがインストールされていない新しい環境でセットアップする時も、go buildだけで済んで、go getの作業がいらないのでとても便利です!

使われるパッケージのバージョン固定とかもできるようですね。

JavaScriptにおける、npm・package.jsonみたいなものですかね。

import (
    "./a"
    "./b"
)

として、相対パスでローカルパッケージを使ってもいいのですが、他の機能が超便利なので、これからはGo Modulesを積極的に使っていこうと思います。