为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
繁星点点滴滴 2021-04-27 13:17:53
我正在通过发出对请求的回复chan X,其中X是一个结构。该请求是搜索操作,因此理想情况下,我希望能够返回X或报告未找到它。对于Maybe XHaskell或x optionOCaml,这将是一项任务。Go中有什么体面的方法可以做到这一点吗?我没有返回指针(因为稍后返回的原始对象可能会被修改),所以我不能只返回nil。编辑:现在,我将其设为a,chan interface{}然后发送Xor或nil,但这很丑陋,并且会破坏类型安全性。
查看完整描述

3 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

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


查看完整回答
反对 回复 2021-05-10
?
繁星coding

TA贡献1797条经验 获得超4个赞

我使用指针类型,其中:

  • Maybe X = *X

  • Nothing = nil

  • Just x = &x


查看完整回答
反对 回复 2021-05-10
?
守着一只汪

TA贡献1872条经验 获得超3个赞

另一种方法是添加一个好的布尔值。您可以将其添加到X或包装X,例如struct {X; ok bool}


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信