收到以下错误

时间:2017-02-08 06:52:30

标签: go

编译时我收到错误。

根本原因是文件导入了context个包,但是在编译期间github.com/docker/docker/vendor/golang.org/x/net/context被引用了a,任何关于如何使它引用context导入的指针代替docker' vendor

总结这个问题, 文件中的导入如下

import "golang.org/x/net/context"

有一个方法调用,它将上下文对象作为参数,但是,有两个存储库具有上下文,

  • golang.org/x/net/context
  • github.com/docker/docker/vendor/golang.org/x/net/context

在基于长度的编译期间,go选择2存储库。但是方法需要第一个golang.org/x/net/context。因此,收到了代码段中的类型错误

    "-X main.version=dev-49-gc8cc01b -X main.commit=c8cc01b -X     main.branch=master" ./...
 github.com/influxdata/telegraf/plugins/inputs/docker
 plugins/inputs/docker/docker.go:103: cannot use c (type *client.Client) as     type DockerClient in assignment:
    *client.Client does not implement DockerClient (wrong type for  ContainerList method)
            have ContainerList("github.com/docker/docker/vendor/golang.org/x/net/context".Context, types.ContainerListOptions) ([]types.Container, error)
            want ContainerList("context".Context, types.ContainerListOptions) ([]types.Container, error) make: *** [build] Error 2  sh-4.2# vi plugins/inputs/docker/docker.go

1 个答案:

答案 0 :(得分:-1)

我能想到的两个选择:

  1. 为上下文导入添加别名,例如

    goContext golang.org/x/net/context docContext github.com/docker/docker/vendor/golang.org/x/net/context

  2. 将上下文依赖关系分解为两个文件或包