ただの記録

積み重ねと繰り返し

Golang のパッケージ構造がわからん



Golang のパッケージ構造がわからんちん。

go run main.go すると

カレントパッケージにある

main パッケージ の main 関数が実行される。

ふむ、それはわかった。

カレントパッケージに別ファイルを作って

そこにある関数をよびだそうと思ったら

あれーって頭が混乱した。

そもそもの目的は

せっかく写経したソースを

整理して GitHub に公開していこうと思ったから。

そーゆーわけで

そこからちょっと調べてみることに。

うまく情報が探せてないけど、

こちらのブログ様を参考にさせていただいた。

そして、実際トライしながら、自分なりに考察してみた。

例えば・・・

gosample パッケージにある main.go に

package main

func main()

と書くのが違和感なのか、私は。。。

以下、正しくない記述だけど、

package gosample

func main()

の方がしっくりきてしまう。。。慣れか。。。

Golang の言語仕様に慣れないと。

というより、理解せよ、だよなぁ。

main は "カレントパッケージのメイン" ぐらいの意味で捉えてたらスムーズなのかな。

むしろ、わざわざ自分のパッケージ名を名乗るのは

他パッケージから参照されることを明示しているのか。

逆にいうと、main パッケージの実行はそのパッケージだけに限定される。

そう考えると、確かにシンプルでわかりやすい(かも?)。

しかも、それって逆にいうと

もし main パッケージの中に記述したメソッド

他パッケージで使用したいってなった場合は

main パッケージ以外に切り出す必要があるってことかぁ。

というか、そもそも

main パッケージ ≠ パッケージ

ってことな気がしてきた。。。

(「main バッケージ」ってわざわざ呼ぶくらいだもんなぁ。)

あと、自分がファイル名にとらわれたりするあたり、

だいぶ頭が java 化されてる気がする。。。ぐすん。。。

まだ全体邸によくわからんけど、

じょじょに Golang のこの辺りも理解できるよう勉強しよう。。。

応急処置として、ひとまず sub パッケージに切り出すことにした〜。

へぼい。