Есть ли хороший способ имитировать тип «Может быть» или «вариант» в Go?

Я отправляю ответ на запрос через chan X, где X— это структура. Запрос представляет собой операцию поиска, поэтому в идеале я хотел бы иметь возможность вернуть либо X, либо сообщить, что он не найден.

Это будет задача для Maybe Xв Haskell или x optionв OCaml. Есть ли достойный способ сделать это в Go? Я не возвращаю указатель (поскольку исходный объект, который я возвращаю, может быть изменен позже), поэтому я не могу просто вернуть nil.

Редактировать:прямо сейчас я делаю chan interface{}и либо отправляю Xлибо nil, но это некрасиво и нарушает безопасность типов.

13
задан Ashe 26 May 2012 в 01:23
поделиться