17791
例えば下記のようなディレクトリ構成の場合

```

    ├── controllers
    │   ├── controller.go
    ├── main.go
    
```

`controllers`パッケージ(`controller.go`)から、`main`パッケージ、すなわち、`main.go`の関数を呼ぶにはどうすればいいのでしょうか。

`github.com/<user-name>/<project-
name>`をインポートすると、`golint`のエラーは消えましたが、実行すると循環参照はできないとのエラーがでました。

`github.com/<user-name>/<project-name>/main`ではパッケージが見つからないというエラーが出ました。  
ご教授ねがえますでしょうか。
CC BY-SA 3.0
2015-10-19T00:45:20.953
17790
2015-10-19T00:52:23.880
7232
question
go
Golangでパッケージからmainパッケージの関数を呼ぶ
`controllers` パッケージの関数を呼び出す際に、引数で `main`
パッケージの関数を渡します。フックやコールバックを予め登録するという考え方です。

関数の代わりに `interface` を使うという手もあります。`controller` 側で定義された `interface` を満たすように
`main` 側に実装し、`controller` を呼び出す前にその実装を渡すイメージです。C言語やJavaとは異なり、golangでは
`interface` の実装する際は定義を直接参照する必要がない、充足してさえいれば良いことを利用します。
CC BY-SA 3.0
2015-10-19T00:52:23.880
17791
2015-10-19T00:52:23.880
208
17790
answer