以前、こんな記事を書いた。
hiro99ma blog: [golang]go runの引数はなんなのか
https://hiro99ma.blogspot.com/2020/02/golanggo-run.html
とりあえずmainパッケージを含んでいるディレクトリを指定しておけばいいんじゃないか、くらいで終わった。
そういえばimportなんかは基本的にsrc以下からのパスで書いていたはずだ。
import "github.com/hirokuma/gogo/cmd"、とか。
mainパッケージを含んでいるディレクトリを書くということであれば、cmdディレクトリの中がmainパッケージになっていて、どれかのgoファイルの中にmain()があるんだろう。
いつも「mainパッケージ」と呼んでいるが、よく考えれば正式な名前は「github.com/hirokuma/gogo/cmd/mainパッケージ」なのだろうか?
runの引数は実行できれば良かったのだが、importとなるとまた話が変わってくることに気付いたのだった。
ここを見よう。
How to Write Go Code - The Go Programming Language
https://golang.org/doc/code.html
読む前の注意点。
This document assumes that you are using Go 1.13 or later and the
GO111MODULE
environment variable is not set
1.13より古い場合はアーカイブ参照だ。
ページの最終更新日が書いてあると助かるのだが、載ってなさそうだ。
google検索からすると、2020年1月13日みたいだ。
翻訳するなら自動でもよさそうなので、気がついたところだけ抜粋しよう。
- パッケージ、リポジトリ、モジュール
- たぶん、ファイル単体を別とすれば、パッケージが最小単位
- リポジトリは1つ以上のモジュールを含む
- 通常、リポジトリのルートにある1つのモジュールが含まれる
- go.modとディレクトリのことが書いてあるが、なんか分かりづらいぞ。。
- モジュールは関連するパッケージの集合
- A package is a collection of source files in the same directory that are compiled together.
- パッケージの単位は同一ディレクトリなのね。
- Each module's path not only serves as an import path prefix for its packages, but also indicates where the
go
command should look to download it. - import pathってことは、importに書いているあれはパスの方なのね。
- An import path is a string used to import a package. A package's import path is its module path joined with its subdirectory within the module.
- import pathは、パスといっても純粋なディレクトリじゃなくて、ディレクトリ構造+パッケージ名、なのか
よし、なんとなくわかった!
わかったんじゃないだろうか。。。
いろいろコードの書き方に抜け道(コンパイルエラーにならず上記の書き方にしない方法)はあるのだろうが、上記の書き方をしておけば悪くないということだ。
C言語の時は使用期間が長いこともあり、自分でなんとなくルールを決めていった。
Java言語ではディレクトリ構成も含めてきっちり決められていたので、その通りにやりつつも自由度がないなあ、と思った。
その中間くらいなのかな。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。