golang中的类型不一致,不能将<type>用作<type>

时间:2017-08-16 07:18:19

标签: go goland

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

val arr: Array[Int] = (for (i <- 0 to 4) yield scala.io.StdIn.readInt()).toArray

App2(security.New from security lib):

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

我在线上的错误

  

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 in security ofNew .New

4 个答案:

答案 0 :(得分:2)

您需要修复导入语句,以正确指出导入类型应该属于的位置。阅读错误消息。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

答案 3 :(得分:-3)

您应该按值发送Logger参数!您正在发送Logger的指针(通过引用) 如果您移除*后面的logger,它应该有效!

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

- &GT;

mdl, _ := security.New(logger)