0

我正在用 Go 编写一个使用 Logger 对象类型的应用程序。
在其中,我使用了另一个使用相同记录器对象类型的应用程序:
App1:

import "gitlab.sio.com/go/zlog"

var logger = zlog.New(append(opts,
    zlog.App(c.Name, typ, version),
    zlog.Env(c.Environment),
)...)
....
router.GET("/get", GetHandler(logger))
....
func GetHandler(logger *zlog.Logger){
    ....
    mdl, _ := security.New(*logger)
    ....
}

App2(security.New 来自安全库):

package security

import "gitlab.sio.com/go/zlog"

Middleware struct {
    log             zlog.Logger
}

func New(log zlog.Logger){
...
mdw := Middleware{}
mdw.log = log
}

我遇到的错误

mdl, _ := security.New(*logger)

是:

不能使用 *logger(类型“gitlab.sio.com/go/furtif/vendor/gitlab.sio.com/go/zlog”.Logger)作为类型“gitlab.sio.com/go/security/vendor/gitlab.sio .com/go/zlog".Logger 在参数中的 security.New

4

3 回答 3

3

问题是由于在两个不同的供应商文件夹中导入了同一个库。如果您尝试仅将应用程序 2 用作库,则删除应用程序 2 中的供应商文件夹将解决此问题。

于 2018-08-28T12:40:50.460 回答
1

您需要修复您的导入语句以正确地指向它们应该属于的导入类型。阅读错误信息。

于 2017-08-16T07:29:45.223 回答
-1

这个错误发生在我身上,因为我在同一个包中多次声明了一个类型。

于 2018-10-31T15:34:38.460 回答