興味本位でGo言語に触れてみようと思う。Linuxへのインストールから複数ファイルのプロジェクトのビルドまで。
で、環境はUbuntuでやるけど、WSL Ubuntuでも同じかなと思う。インストールはここ(https://go.dev/doc/install)に書いてあるけど、まぁSynapticとかaptとかでやっちまっていいや。
sudo apt install golangはい。超簡単。
で、フォルダ作って、
mkdir -p go/hellocd go/hellohello.go
-
package main -
-
import "fmt" -
-
func main(){ -
fmt.Println("hello Go world") -
}
go run hello.goで、実行ファイル作るには
go build hello.goって感じで、実行ファイルができて、ちゃんと実行できる。
で、余談というか、きっと後で苦しむこととして、複数ファイルのプロジェクトについて、情報が少ないので、まとめておく。
somefilesってフォルダをプロジェクトのフォルダとして、この下にいくつかのフォルダとコードを入れていくって考える。somefilesフォルダに移動して、go.modファイルを作る。
mkdir -p go/somefilescd go/somefilesgo mod init somefilesフォルダ名と同じである必要があるかはわからん。で、go.modってファイルができる。これはこのまま。いじらなくていい。
go.mod
-
module somefiles -
-
go 1.22.2
で、サブフォルダにコードを作成する。subfolderフォルダにfile1.goを作るってことにする。
subfolder/file1.go
-
package subfolder //パッケージ名はフォルダ名と同じにする -
-
import ( -
"fmt" -
) -
-
func SayHello() { -
fmt.Println("Hello from file1 in subfolder.") -
}
で、メインのコードmain.goはこうする。
main.go
-
package main -
-
import ( -
"fmt" -
"somefiles/subfolder" //現在のフォルダーからサブフォルダまでのパス -
) -
-
func main() { -
fmt.Println("Hello Go world!") -
subfolder.SayHello() //SayHello関数を定義しているファイルに記述されているパッケージ名 -
}
で、今こんな感じになっている。
-
somefiles -
├── go.mod -
├── main.go -
└── subfolder -
└── file1.go
で、実行する。
go run main.goできた。
実行ファイルを作成してみる。
go build main.go実行ファイルできて、実行できた。実行ファイル名はソースコード名になるっぽい。<--これをビルド時に強制的に変更する方法がわからん。ところで、go.modファイルって存在している意味が分からん。外部mod使う場合に必要になるっぽいけど、、、今回の例では、、、
ちなみに、同じmainパッケージでファイルを分割する場合は、もっと簡単で、これはwebのあちこちに記述があるので省略。






コメントをお書きください