我正在使用Go的pebbe/zmq4
ZeroMQ绑定,我正在尝试为我的代码开发更高级别的接口,以便在我的测试中支持模拟。
作为我的问题的一个示例,zmq4.Socket
结构RecvMessage
函数需要zmq4.Flag
作为参数。 zmq4.Flag
只是int
,由Go绑定中的type Flag int
定义。
我试图在不依赖ZeroMQ绑定的情况下开发我的接口,所以我将接口定义为:
type Socket interface {
RecvMessage(int) ([]string, error)
}
当我尝试为此接口使用ZeroMQ套接字时,我收到一条错误,指出... have RecvMessage(zmq4.Flag) ([]string, error) want RecvMessage(int) ([]string, error)
。
有没有办法解决这个问题,或者我只需要咬紧牙关并依赖我界面中的ZeroMQ绑定?
答案 0 :(得分:4)
重要的是要认识到type Foo int
是一个单独的类型而不是别名。
见How to cast to a type alias in Go?
使用zmq4.Flag调用RecvMessage唯一可以做的就是将其转换为int。
var f zmq4.Flag = 1
RecvMessage(int(f))