初めに
Goって公開されてるパッケージを組み合わせてなんやかんやするのがメインで
ファイルがすんごく長くなる事ってあんまり考えないのかな?
普通に見にくくなっちゃうと思うので、ファイルを分ける方が好きだったりします。
そして、ファイルを分けるのにドはまりしたので、書いておく
一応Windowsの場合です。
長くなったmain.goを分割する
フォルダ構成はこうしたい!
※一応公式の推奨フォルダ構成を参考にした
GOPATH/
src/
└ test/ <-今回のプロジェクトルート
├ cmd/
│ └ textApp/
│ └ main.go
└ intarnal/
└ sub/
└ sub.go
まずはとりあえず、go mod init 〇〇〇〇 する
CMDで以下を実行
cd GOPATH<皆良い感じに変えてほしい>/test
go mod init locl.l/test
ポイント
go mod init locl.l/test
の「.(ドット)」は絶対に必要らしいwww
なんじゃそれ!?
そうすると、こうなる
GOPATH/
src/
└ test/ <-今回のプロジェクトルート
├ cmd/
│ └ textApp/
│ └ main.go
├ intarnal/
│ └ sub/
│ └ sub.go
└ go.mod
go.modの中身
go.mod
module local.l/test
go 1.16
sub.goの中身
/internal/sub/sub.go
package sub
import "fmt"
func Rectangle(l int, m int) int {
return l * m
}
func Intro() {
fmt.Println("これはsubです。")
}
main.goの中身
/cmd/testApp/main.go
package main
import (
"fmt"
"local.l/test/internal/sub"
)
func main() {
fmt.Println(sub.Rectangle(4, 5))
sub.Intro()
}
実行する
CMDで
go run cmd/testApp/main.go
すると以下が表示されたのでOK!!
20
これはmypkgです。
ついでにビルドする
推奨のフォルダ構成に則ってbuildフォルダを作る
GOPATH/
src/
└ test/ <-今回のプロジェクトルート
├ cmd/
│ └ textApp/
│ └ main.go
├ intarnal/
│ └ sub/
│ └ sub.go
├ go.mo
└ build/ <-この中にコンパイルしたexeファイルを入れたい
cmdで実行
go build -o build/test.exe cmd/testApp/main.go
そしたら、buildフォルダの中にtest.exe
ができた!
GOPATH/
src/
└ test/ <-今回のプロジェクトルート
├ cmd/
│ └ textApp/
│ └ main.go
├ intarnal/
│ └ sub/
│ └ sub.go
├ go.mo
└ build/
└ text.exe <- exeファイルができた!
毎回長いコマンド叩くのめんどいからbatファイルを作る
推奨のフォルダ構成に則ってbuildするshとかbatファイルはscriptフォルダ入れるらしい
GOPATH/
src/
└ test/ <-今回のプロジェクトルート
├ cmd/
│ └ textApp/
│ └ main.go
├ intarnal/
│ └ sub/
│ └ sub.go
├ go.mo
├ build/
│ └ text.exe
└ script/ <- scriptフォルダを作った
└ test_build.bat <- ビルドコマンドを実行するバッチファイルを作った
実行する
script/test_build.bat
コンパイルしたexeファイルを実行する
build\test.exe
20
これはsubです。
OK!