2025年1月30日木曜日

Go言語入門(1)

 

興味本位で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
  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main(){
  6.     fmt.Println("hello Go world")
  7. }
で、実行
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
  1. module somefiles
  2.  
  3. go 1.22.2

で、サブフォルダにコードを作成する。subfolderフォルダにfile1.goを作るってことにする。

subfolder/file1.go
  1. package subfolder    //パッケージ名はフォルダ名と同じにする
  2.  
  3. import (
  4.     "fmt"
  5. )
  6.  
  7. func SayHello() {
  8.     fmt.Println("Hello from file1 in subfolder.")
  9. }
気をつけなきゃいけないことをソースコード内に記述してある。それと、publicな関数は関数名を大文字ではじめるらしい。

で、メインのコードmain.goはこうする。

main.go
  1. package main
  2.  
  3. import (
  4.     "fmt"
  5.     "somefiles/subfolder"    //現在のフォルダーからサブフォルダまでのパス
  6. )
  7.  
  8. func main() {
  9.     fmt.Println("Hello Go world!")
  10.     subfolder.SayHello()    //SayHello関数を定義しているファイルに記述されているパッケージ名
  11. }

で、今こんな感じになっている。
  • somefiles
  • ├── go.mod
  • ├── main.go
  • └── subfolder
  •     └── file1.go

で、実行する。
go run main.go
できた。
実行ファイルを作成してみる。
go build main.go
実行ファイルできて、実行できた。実行ファイル名はソースコード名になるっぽい。<--これをビルド時に強制的に変更する方法がわからん。ところで、go.modファイルって存在している意味が分からん。外部mod使う場合に必要になるっぽいけど、、、今回の例では、、、
ちなみに、同じmainパッケージでファイルを分割する場合は、もっと簡単で、これはwebのあちこちに記述があるので省略。

0 件のコメント:

コメントを投稿