Goのファイル分割
【開発環境】
OS:Win11(64ビット)
go version go1.19.4 windows/amd64
VSCode1.72.2、及びコマンドプロンプト
1,ファイル分割無しの場合
・「main.go」ファイル
package main
import (
"fmt"
)
func foo() {
fmt.Println("foo")
}
func bar() {
fmt.Println("bar")
}
func main() {
foo()
bar()
}
・実行
PS D:\GO言語\サンプルプログラム\ファイル分割> go run main.go
foo
bar
2.同じパッケージ(ディレクトリ)内でファイル分割

「main.go」ファイルのコード
package main
import (
"fmt"
)
func foo() {
fmt.Println("foo")
}
func main() {
foo()
Bar() // 外部ファイルの関数を使用する場合、頭文字は大文字
}
「bar.go」ファイルのコード
package main
import (
"fmt"
)
func Bar() { // 外部ファイルで使用される場合、頭文字は大文字
fmt.Println("bar")
}
PS D:\GO言語\サンプルプログラム\ファイル分割> go run main.go bar.go
foo
bar
ファイル2つをいっぺんに渡す
◆別パッケージ(ディレクトリ)でファイル分割
project
├─ main.go
├─ bar.go
├─ pkg_baz
│ └─ baz.go
└─ go.mod
・「main.go」ファイル
package main
import (
"fmt"
"project/pkg_baz" // baz.go までのパス
)
func foo() {
fmt.Println("foo")
}
func main() {
foo()
Bar()
pkg_baz.Baz() // パッケージ名を頭につける
}
・「bar.go」
package main
import (
"fmt"
)
func Bar() { // 外部ファイルで使用される場合、頭文字は大文字
fmt.Println("bar")
}
・「baz.go」ファイル
package pkg_baz // パッケージ名はディレクトリ名と同じにする
import (
"fmt"
)
func Baz() {
fmt.Println("baz")
}
・「go.mod」ファイル
module project // モジュール名はディレクトリ名と同じにする
go 1.18
PS D:\GO言語\サンプルプログラム\ファイル分割\project> go run .
foo
bar
baz
※コメント投稿者のブログIDはブログ作成者のみに通知されます