
[code]

    parent
    |-app1: アプリケーション
    |
    |-common: 共通ライブラリ
    
[/code]

上のようなディレクトリ構成になっているときに

app1のメイン関数で`common`パッケージをインポートしてその関数を呼び出したのですが`undefined`になってしまいます。なぜでしょうか。

呼び出した`common`の関数は以下のコードの`NewRoutes()`です。  
ちなみに依存パッケージは`dep`で`app1`、`common`それぞれで管理しています。

**common/routes.go**

[code]

    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)
        }
    }
    
[/code]

**app1/app.go**

[code]

    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()
    }
    
[/code]


CC BY-SA 3.0
2017-04-23T06:36:39.663
34225
2017-04-23T06:36:39.663
7232
question
go
golangでインポートして関数を使うとundefinedと出る。