🎃

【Golang】$GOPATHの外にプロジェクトを作りパッケージをインポートする

2021/06/20に公開

見出し

Go moduleを導入しGOPATHの呪縛から解き放たれよう

はじめに

想定読者

Goを触り始めGOPATH以外のディレクトリでも開発をしたい人
なんとなくGOPATH,Go moduleについて知りたい人

目的

以前のGoについてふんわり理解する
現在のGoで使われているGo moduleを理解する
GOPATH以外のディレクトリでパッケージのインポートや開発を行う

以前のGoについて

バージョン1.10まで、Goは標準ライブラリ以外のパッケージの管理、ビルドを$GOPATH配下のディレクトリで行っていた。パッケージが全てGOPATHにあったため、GOPATH配下で開発しなければリモート、ローカル共にパッケージをインポートできない状態にあった。

問題点

好きなディレクトリで開発できない

Go moduleの登場

バージョン1.11からmoduleモードが実装された。これがgo moduleと呼ばれるものであり、これによってGOPATH配下でなくても開発ができるようになった。バージョン1.13からはGOPATHモードでの開発は非推奨になり、go moduleがデフォルトになった。

Go moduleを導入してプロジェクト開発を行う

目標

好きなディレクトリでプロジェクトを作成しローカルパッケージ(ローカルのgoファイル)のインポート、リモートパッケージのインポートを行う。
OS不問。

使用するパッケージ

Lorca :GolangでGUIアプリを作れるライブラリ。今回はウインドウを出すだけ。

terminalでgo.modを作成し、リモートパッケージをgetする

terminal

go mod init testPkg
go get github.com/zserge/lorca

main.goでローカルとリモートパッケージを利用する

./main.go

package main
import (
    "testPkg/hoge"
    "github.com/zserge/lorca"
) 
func main(){
    hoge.TestFunc()
    ui, _ := lorca.New("", "", 480, 320)
    defer ui.Close()
    <-ui.Done()
}

ローカルのhogeパッケージを作成する

./hoge/hoge.go

package hoge
func TestFunc(){
    println("hello")
}

実行

go run .

実行結果:コンソールに"hello"が表示され新しいウインドウが出現する。

参考

https://zenn.dev/turara/articles/golang-import-subpackages

Discussion