興味本位でGo言語に触れてみようと思う。Linuxへのインストールから複数ファイルのプロジェクトのビルドまで。 で、環境はUbuntuでやるけど、WSL Ubuntuでも同じかなと思う。インストールはここ(https://go.dev/doc/install)に書いてあるけど、まぁSynapticとかaptとかでやっちまっていいや。
sudo apt install golang
はい。超簡単。
で、フォルダ作って、
mkdir -p go/hello
cd go/hello
hello.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/somefiles
cd go/somefiles
go 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のあちこちに記述があるので省略。
0 件のコメント:
コメントを投稿