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

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

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

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

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()
}