Goでパッケージを作るのはpythonと似ています。
まずはフォルダ構成を下記のようにします。
/
| - main.go
| - moke/
| - obj.go
この"moke"というフォルダ名がパッケージ名になります。
mokeフォルダ内のobj.goは下記のように書きます。
package moke
type Moke struct {
name string
Level int
}
func NewMoke(n string, l int) Moke {
return Moke{n, l}
}
func (m *Moke) Dump() string {
return "Name is " + m.name
}
mokeパッケージ内なので、1行目はpackage mokeにします。
今回は、struct Mokeのnameを小文字で始めてみました。このメンバー変数はmokeパッケージ内のみアクセス可能になります。
つまり、外部から下記のようにしてオブジェクトを作ることができなくなります。
//main.go
package main
func main() {
m := moke.Moke{"name", 1} // コンパイルエラー。"name"はmainパッケージからは見えない
}
パッケージ利用者からは見えなくなるようです。使い道あるのかな。。。?