我有一个中央包,提供其他包依赖的几个接口(让我们调用一个Client).那些其他包提供了那些第一个接口(UDPClient,TCPClient)的几个实现.我Client通过调用NewClient中央包来实例化,并从一个依赖包中选择并调用相应的客户端实现.
当我想告诉中央包关于那些其他包时,它就会崩溃,所以它知道它可以创建什么客户端.这些依赖的客户端实现也导入中央包,创建Go不允许的循环依赖.
前进的最佳方式是什么?我不想将所有这些实现混合在一个包中,并且创建一个单独的注册表包似乎有点过分.目前,我将每个实现注册本身与中央包一起注册,但这要求用户知道在每个使用客户端的单独二进制文件中导入每个实现.
import (
_ udpclient
_ tcpclient
client
)
Run Code Online (Sandbox Code Playgroud) 我的包中有一个生成的文件DO NOT EDIT.我正在为我的包运行测试go test -coverprofile=cover.out <package>.这将创建覆盖率配置文件并显示总覆盖百分比 但它还包括在计算覆盖范围时生成的文件.有没有办法忽略覆盖率计算中生成的文件?
我正在尝试构建和运行一个 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