LoginSignup
0
0

More than 1 year has passed since last update.

Go modules環境で同一module内の他ファイルを読み込む

Posted at

概要

Goで別ファイルの変数や関数を読み込む実装をしようとした際に苦戦したため備忘録として投稿する。
今回はGOPATHでなくGo Modulesを使用する

初期のファイル構成

ツリー

.
├── main.go
└── unify
    ├── const.go
    └── func.go

ファイル

go_placticeがモジュール名でunifyが読み込み先のフォルダ名である。
main関数内で読み込んだ定数と関数を出力している。

main.go
package main

import (
	"fmt"
    "go_plactice/unify"
)
func main() {
    fmt.Println(unify.Hoge);
    fmt.Println(unify.Hello("関数"));
}
const.go
package unify

const Hoge = "定数"
func.go
package unify

func Hello(name string) string {
    message := "Hello " + name
    return message
}

モジュール作成

カレントディレクトリで以下のコマンドを叩きモジュールの初期化を行う。
モジュール名は任意である。

go mod init go_plactice

作成されるmod

モジュール名がgo_placticeになっていることが確認できる。

go.mod
module go_plactice

go 1.18

ツリー構造

モジュールの初期化を行った後のツリー構造である。

.
├── go.mod
├── main.go
└── unify
    ├── const.go
    └── func.go

tidy

必要であれば以下のコマンドを叩く。
今回は不要であるが、パッケージ等をインストールしたい場合などは使用する。

go mod tidy

ツリー構造

上記コマンドを叩くとgo.sumが作成される

.
├── go.mod
├── go.sum
├── main.go
└── unify
    ├── const.go
    └── func.go

確認

最後にmain.goを実行すると、読み込んだ先のファイルの定数と関数が使用できていることが分かる。

% go run main.go
定数
Hello 関数

参考サイト

https://go.dev/doc/tutorial/create-module
https://go.dev/doc/tutorial/call-module-code

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0