だいたいmain.go
と他のcontroller
などでパッケージ化をすると思います。
ここで
- データベース接続
- api関連の構造体初期化
などをしたいとします。
いつも
golang
1package main 2 3var ( 4 dbClient *db.Client 5) 6 7func init(){ 8 // dbclient初期化 9} 10 11func main(){ 12 // 渡している 13 controller.Update(db) 14}
のようなことをしています。
しかし、関数ごとにdbClient
を渡すのが面倒なので、dbClient
を使う別パッケージ内のグローバル変数として定義しています。以下のような感じです。
golang
1package controller 2 3var ( 4 dbClient *db.Client 5) 6 7func Init(){ 8 // dbclientをこっちで初期化 9}
そしてmain.go
で
golang
1func main(){ 2 controller.Init() 3}
などをしていますが、main.go
でも使いたい時があります。
どのようにしたら、大きくいうとリポジトリスコープのグローバル変数が定義できますか?
const
パッケージのようなものを定義するのがベストプラクティスなのでしょうか?
MVCを謳うフレームワークなど既存のコードを眺めてみたり、使ってみると自分なりにベストなものがわかってくるのではないでしょうか。本当にグローバル定義をしたいのでしょうか?それともベストプラクティスを見出したいのでしょうか?
回答1件
あなたの回答
tips
プレビュー