0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Go言語のpackage利用で初手躓いた点

Posted at

昔うっかり買ったので、せっかくだからとGoの勉強してたら、packageを使用してコードを別ディレクトリに分けるあたりでいきなり出鼻をくじかれたので、備忘録的にメモしておく

#TL; DR

プロジェクトについては初手

go mod init プロジェクト名

go.mod ファイル作っとかないとダメ

#起こったこと

Goのファイルにて、下位ディレクトリに作った別のGoファイルから import しようとしたところ

package importしようとしたディレクトリ名 is not in GOROOT

とか言われてエラー吐かれた

基本的には講座の通り書いてたはずなのに、講座で特に触れられてないエラー出てきて初学者大混乱

取った対応

仕方ないので "is not in GOROOT" あたりの文言でぐぐって何が原因なのか探ってみると、出てくるのはPATHや環境変数あたりの話になる

個人的には「PATHを通す」自体はわかるものではあるんだけれど、学習してると参考書内の記述や講座で喋ってる内容に「PATHを通しておいてくれ」みたいなのがあまりなく、すでに前提条件みたいになってるのに何の説明もないような感じになる+ここで一旦出鼻くじかれるので、PATHや環境変数のことは正直好きではない(愚痴)

で、GoのPATHについてどう設定するのか、と考えつつ見ていくと出てくるのは go.mod なるファイルの存在
何も考えずインストールして作ってたが、自分ではそんなファイル見た記憶がないし、調べても自分のPC内に存在していない
すごい雑な理解だと、これがGoプロジェクトのモジュール関係の管理的なことをやってるらしいので、まずこれが必要そうであるという結論に達する

そのため、中の設定どうするかは後で考えるとしてまず作ってみないと、ということで早速

go mod init プロジェクト名

go.mod ファイルをプロジェクト内にサクッと用意することに

念のため、ここまでできたらモジュールの依存関係をふんにゃかしてくれるらしいコマンドとして

go mod tidy

というのがあるらしい、というか go mod init した時のメッセージからして

go: to add module requirements and sums:
        go mod tidy

モジュール要件とまとめをつけるためにこのコマンド打て、と言われてるので実行する

で、これでどうなるかと、さっきエラー吐かれた go run 実行すると

はい、ちゃんと動きました

解決!

単に go.mod ファイルが存在してなかったのがいけなかったらしい
学習に使った講座では特に言われてなかった気がするが、そもそもコマンドとかでプロジェクト作ると自動でつくようなものだったとかだろうか?
ともかく、解決できたのでこれで良さそう

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?