Я использую привязки ZeroMQ для Go, но я пытаюсь разработать интерфейсы более высокого уровня для моего кода, который ZeroMQ реализует, чтобы поддерживать насмешку в моих тестах.Можно ли убедить компилятор Golang принять `type Foo int` как` int`?
В качестве примера моего вопроса функция zmq4.Socket
struct RecvMessage
ожидает в качестве аргумента zmq4.Flag
. zmq4.Flag
- это просто int
, как определено type Flag int
в привязках Go.
Я пытаюсь развить свои интерфейсы без каких-либо зависимостей от привязок ZeroMQ, поэтому я интерфейс, определенный как:
type Socket interface {
RecvMessage(int) ([]string, error)
}
Когда я пытаюсь использовать сокет ZeroMQ для этого интерфейса, я получаю сообщение об ошибке ... have RecvMessage(zmq4.Flag) ([]string, error) want RecvMessage(int) ([]string, error)
.
Есть ли способ справиться с этим, или мне просто нужно укусить пулю и зависеть от привязок ZeroMQ в моих интерфейсах?
Должен ли пользователь интерфейса Socket знать константы zmq4 для использования интерфейса? Если это так, в импортировании zmq4 в вашем пакете не так много недостатков. –
Хорошая точка ... Я единственный, кто ее использует, поэтому импорт zmq4 не должен быть проблемой. По сути, мое любопытство заставляет меня усложнять ситуацию, как обычно. – Bryan