2017-08-16 34 views
-2

我正在使用Logger对象类型在Go中编写应用程序。
在这里面我用的是使用相同的记录对象类型另一个应用程序:
应用1:golang中的不一致类型,不能使用<Type> as <Type>

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

应用2(security.New从安全LIB):

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(*记录器)

是:

不能使用*记录器(类型 “gitlab.sio.com/go/furtif/vendor/gitlab.sio.com/go/zlog".Logger)类型” gitlab.sio。安全/供应商/ gitlab.sio.com/go/zlog“。安全参数记录器。新的

+5

仔细阅读该消息:这是不同的类型。一个来自'.../furtif/vendor ...'包,另一个来自'.../security/vendor/...'。修理你的售货机。 – Volker

回答

0

您需要修复导入语句以正确指出导入类型至。阅读错误消息。

+3

这不是重要的问题。这就是说,GOPATH中有两个分开出售的同一个库的副本 - 看起来他们已经导入了一个使用vendoring的库,它一如既往地是一个Bad Thing™。 – Adrian

-3

您应该通过值发送记录器参数!您正在发送Logger的指针(通过引用) 如果您删除logger后面的*,它应该可以正常工作!

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

- >

mdl, _ := security.New(logger) 
+0

这不是问题。 – Gavin

相关问题