有没有可能说服Golang编译器接受`type Foo int`作为`int`?

有没有可能说服Golang编译器接受`type Foo int`作为`int`?,go,zeromq,Go,Zeromq,我正在使用用于Go的pebbe/zmq4ZeroMQ绑定,并且我正在尝试为ZeroMQ实现的代码开发更高级别的接口,以便在测试中支持模拟 作为我问题的一个例子,zmq4.Socketstruct的RecvMessage函数需要一个zmq4.Flag作为参数zmq4.Flag只是一个int,由Go绑定中的类型Flag int定义 我试图在不依赖ZeroMQ绑定的情况下开发接口,因此我将接口定义为: type Socket interface { RecvMessage(int) ([]st

我正在使用用于Go的
pebbe/zmq4
ZeroMQ绑定,并且我正在尝试为ZeroMQ实现的代码开发更高级别的接口,以便在测试中支持模拟

作为我问题的一个例子,
zmq4.Socket
struct的
RecvMessage
函数需要一个
zmq4.Flag
作为参数
zmq4.Flag
只是一个
int
,由Go绑定中的
类型Flag int
定义

我试图在不依赖ZeroMQ绑定的情况下开发接口,因此我将接口定义为:

type Socket interface {
    RecvMessage(int) ([]string, error)
}
当我尝试为这个接口使用ZeroMQ套接字时,我得到一个错误,声明
。。。have RecvMessage(zmq4.Flag)([]字符串,错误)have RecvMessage(int)([]字符串,错误)


有没有办法处理这个问题,或者我只需要咬紧牙关,依赖接口中的ZeroMQ绑定?

重要的是要认识到
类型Foo int
是一个单独的类型,而不是别名。 看

使用zmq4.Flag调用RecVMMessage的唯一方法是将其转换为int

var f zmq4.Flag = 1
RecvMessage(int(f))

必须认识到,
type Foo int
是一个单独的类型,而不是别名。 看

使用zmq4.Flag调用RecVMMessage的唯一方法是将其转换为int

var f zmq4.Flag = 1
RecvMessage(int(f))

套接字接口的用户是否需要知道zmq4常量才能使用该接口?如果是这样的话,在你的软件包中导入zmq4并没有太大的负面影响。。。我是唯一一个使用它的人,所以导入zmq4应该不是问题。本质上,我的好奇心让我变得更加困难,就像往常一样。套接字接口的用户需要知道zmq4常量才能使用接口吗?如果是这样的话,在你的软件包中导入zmq4并没有太大的负面影响。。。我是唯一一个使用它的人,所以导入zmq4应该不是问题。本质上,我的好奇心让我像往常一样把事情弄得更困难。