2013年7月9日火曜日

GAE + Go で他ディレクトリの go ファイルを読み込む

GAE + Go では import 文で他のディレクトリ内の go ファイルを読み込むことができます。

import 文でアプリケーションルートディレクトリから、
読み込みたい go ファイルが置いてあるディレクトリまでを指定することで、
対象ディレクトリ内のすべての go ファイルを読み込むことができます。

例えば以下の様な分割をしていたとします。




view 内の go ファイルから model 内の go ファイルを参照するとします。
以下のように import 文を書きます。

view/hoge.go
package gae

// approot 直下の model ディレクトリ内のすべての go ファイルを読み込む
import "model"  

func showModel() {
    data := model.GetData()
    fmt.Fprintf("Data is %s", data.ToString())
}

package をインポートしたときと同様に、
関数や変数を使うときには読み込んだディレクトリ名を先頭に付けます。
data := model.GetData()

先頭にディレクトリ名を付けたくない場合は、以下のように読みこめばOKです。
package gae

import . "model"

func showModel() {
    data := GetData()
    fmt.Fprintf("Data is %s", ToString())
}

また、パッケージと同様で、
関数名や変数名は大文字で始まるものだけが外部から参照できます。
小文字で始まる関数を別のファイルから使うことはできないので注意が必要です。