有没有一种好的方法可以模拟Go中的“也许”或“选项”类型?

我正在通过发出对请求的回复chan X,其中X是一个结构。该请求是搜索操作,因此理想情况下,我希望能够返回X或报告未找到它。

对于Maybe XHaskell或x optionOCaml,这将是一项任务。Go中有什么体面的方法可以做到这一点吗?我没有返回指针(因为稍后返回的原始对象可能会被修改),所以我不能只返回nil

编辑:现在,我将其设为a,chan interface{}然后发送Xor或nil,但这很丑陋,并且会破坏类型安全性。


繁星点点滴滴
浏览 204回答 3
3回答

红颜莎娜

如果您正在使用interface {},则现在实际上是在返回一个指针。为什么不更改interface {}为*X并确保返回该对象的副本?如果我了解您不使用的原因chan *X,那就是。

繁星coding

我使用指针类型,其中:Maybe X = *XNothing = nilJust x = &x

守着一只汪

另一种方法是添加一个好的布尔值。您可以将其添加到X或包装X,例如struct {X; ok bool}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go