環境
- go歴 初心者
- go1.7.4 darwin/amd64
これはなに?
Go言語(golang)を学ぶ第一歩として
開発の仕方や、ディレクトリ構造を含めて
$GOPATH
に依存しない独自パッケージの扱いについてまとめました。
※ 解釈や考え方が間違っている場合はご指摘くださいm(_ _)m
概要
まず、開発環境の前提として $GOPATH
というワークスペースパスを指定して開発を行うようです。
ただ、必ず決まった場所で開発するわけでもないと思うので
自由な場所でもできる方法はないかと模索してみました。
実装
試した環境としては下記の通りです。
■ディレクトリ構造
.
├── main.go
└── message
├── config.go
└── post.go
main.go
package main
import "./message"
func main() {
message.FetchSetting()
message.Post("hogehoge")
}
config.go
package message
import "log"
func FetchSetting() {
log.Print("pkg: message, src: config.go")
log.Print("FetchSetting")
}
post.go
package message
import "log"
func Post(message string) {
log.Print("pkg: message, src: post.go")
log.Print("Post " + message)
}
■実行
suna_suna hello $ go run main.go
2017/07/26 22:44:59 pkg: message, src: config.go
2017/07/26 22:44:59 FetchSetting
2017/07/26 22:44:59 pkg: message, src: post.go
2017/07/26 22:44:59 Post hogehoge
suna_suna hello $
所感
まず、import
するパッケージの指定ですが、 ./〇〇
とカレントからの相対パスを指定することで、わざわざ $GOPATH/src
に置く必要がなくディレクトリ単位で完結した開発ができそうです。
また、パッケージの認識はフォルダ名を見ているようなので、その配下にあるファイル名は関連などを気にする必要がなく自由と解釈しています。
独自パッケージに関数をもたせる場合は、先頭文字を大文字にする必要がありますが、こういった書き方はあまりみたことがありません。
どういった意図があるんでしょうか
このあたりの Golang の特徴などはこれから学んでいこうと思います。