golangでインポートして関数を使うとundefinedと出る。
parent
|-app1: アプリケーション
|
|-common: 共通ライブラリ
上のようなディレクトリ構成になっているときに
app1のメイン関数でcommon
パッケージをインポートしてその関数を呼び出したのですがundefined
になってしまいます。なぜでしょうか。
呼び出したcommon
の関数は以下のコードのNewRoutes()
です。
ちなみに依存パッケージはdep
でapp1
、common
それぞれで管理しています。
common/routes.go
package common
import "github.com/labstack/echo"
// Routes is object for routes.
type Routes struct {
controllers []Controller
}
// NewRoutes is constructor of Routes.
func NewRoutes(controllers ...Controller) *Routes {
routes := &Routes{}
for i := range controllers {
routes.AddController(controllers[i])
}
return routes
}
// AddController add a controller.
func (r *Routes) AddController(con Controller) {
r.controllers = append(r.controllers, con)
}
// ApplyRoutes apply routes of controllers.
func (r *Routes) ApplyRoutes(c echo.Context) {
for i := range r.controllers {
r.controllers[i].ApplyRoutes(c)
}
}
app1/app.go
package main
import (
"github.com/myuser/myproj/services/common"
"github.com/labstack/echo"
mw "github.com/labstack/echo/middleware"
)
func main() {
e := echo.New()
e.Use(mw.Logger())
e.Use(mw.Recover())
e.Use(mw.Gzip())
// undefined: common.NewRoutes()
routes := common.NewRoutes()
}