gpt4 book ai didi

go - 是否有可能说服 Golang 编译器接受 `type Foo int` 作为 `int` ?

转载 作者:IT王子 更新时间:2023-10-29 02:29:52 26 4
gpt4 key购买 nike

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

作为我的问题的一个例子,zmq4.Socket 结构的 RecvMessage 函数需要一个 zmq4.Flag 作为参数。 zmq4.Flag 只是一个 int,由 Go 绑定(bind)中的 type Flag int 定义。

我正在尝试开发我的接口(interface)而不依赖于 ZeroMQ 绑定(bind),所以我有一个接口(interface)定义为:

type Socket interface {
RecvMessage(int) ([]string, error)
}

当我尝试为此接口(interface)使用 ZeroMQ 套接字时,我收到一条错误消息,指出 ... have RecvMessage(zmq4.Flag) ([]string, error) want RecvMessage(int) ([]string,错误)

有什么方法可以解决这个问题,还是我只需要硬着头皮依赖接口(interface)中的 ZeroMQ 绑定(bind)?

最佳答案

重要的是要认识到 type Foo int 是一个单独的类型而不是别名。参见 How to cast to a type alias in Go?

要使用 zmq4.Flag 调用 RecvMessage,您唯一可以做的就是将其转换为 int。

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

关于go - 是否有可能说服 Golang 编译器接受 `type Foo int` 作为 `int` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34802485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com