相关疑难解决方法(0)

在Go中注册包而没有循环依赖

我有一个中央包,提供其他包依赖的几个接口(让我们调用一个Client).那些其他包提供了那些第一个接口(UDPClient,TCPClient)的几个实现.我Client通过调用NewClient中央包来实例化,并从一个依赖包中选择并调用相应的客户端实现.

当我想告诉中央包关于那些其他包时,它就会崩溃,所以它知道它可以创建什么客户端.这些依赖的客户端实现也导入中央包,创建Go不允许的循环依赖.

前进的最佳方式是什么?我不想将所有这些实现混合在一个包中,并且创建一个单独的注册表包似乎有点过分.目前,我将每个实现注册本身与中央包一起注册,但这要求用户知道在每个使用客户端的单独二进制文件中导入每个实现.

import (
    _ udpclient
    _ tcpclient
    client
)
Run Code Online (Sandbox Code Playgroud)

packaging go cyclic-dependency

20
推荐指数
1
解决办法
2203
查看次数

如何忽略Go测试覆盖中生成的文件

我的包中有一个生成的文件DO NOT EDIT.我正在为我的包运行测试go test -coverprofile=cover.out <package>.这将创建覆盖率配置文件并显示总覆盖百分比 但它还包括在计算覆盖范围时生成的文件.有没有办法忽略覆盖率计算中生成的文件?

testing unit-testing code-coverage build go

14
推荐指数
4
解决办法
5320
查看次数

不允许使用内部包装

我正在尝试构建和运行一个 repo ( https://github.com/hyperledger/fabric/tree/master ) 但这个错误不断弹出,我仍然没有找到解决方案。

consensus.go:12:2: use of internal package github.com/hyperledger/fabric/internal/pkg/identity not allowed
Run Code Online (Sandbox Code Playgroud)

这只是导致此错误的众多文件之一。我很确定我做错了什么,因为这个 repo 应该可以工作。

去版本:

go version go1.13.5 linux/amd64
Run Code Online (Sandbox Code Playgroud)

操作系统:Linux Mint 19.2 Cinnamon

go go-build

11
推荐指数
1
解决办法
2万
查看次数