Types 有没有一种很好的方法来模拟;也许吧;或;选择权;输入围棋?
我正在通过Types 有没有一种很好的方法来模拟;也许吧;或;选择权;输入围棋?,types,go,nullable,Types,Go,Nullable,我正在通过chan X发送对请求的回复,其中X是一个结构。请求是一个搜索操作,因此理想情况下,我希望能够返回X,或者报告找不到它 这将是Haskell中的可能是X或OCaml中的X选项的任务。在围棋中有什么像样的方法吗?我没有返回指针(因为我返回的原始对象稍后可能会被修改),所以我不能只返回nil 编辑:现在我把它变成一个chan接口{},或者发送一个X或者nil,但是这很难看,并且破坏了类型安全。如果你使用接口{}你现在实际上是在返回一个指针。为什么不将接口{}更改为*X,并确保返回对象的副本
chan X
发送对请求的回复,其中X
是一个结构。请求是一个搜索操作,因此理想情况下,我希望能够返回X
,或者报告找不到它
这将是Haskell中的可能是X
或OCaml中的X选项的任务。在围棋中有什么像样的方法吗?我没有返回指针(因为我返回的原始对象稍后可能会被修改),所以我不能只返回nil
编辑:现在我把它变成一个chan接口{}
,或者发送一个X
或者nil
,但是这很难看,并且破坏了类型安全。如果你使用接口{}
你现在实际上是在返回一个指针。为什么不将接口{}
更改为*X
,并确保返回对象的副本?如果我理解您不使用chan*X的原因,也就是说。另一种方法是添加一个ok bool。您可以将其添加到X或包装X,如struct{X;ok bool}
我使用指针类型,其中:
可能是X
=*X
Nothing
=nil
只有x
=&x
我最近需要表示一个可选/可能的类型,我不想使用指针,也不能依赖零值。我最后选择写下面的内容,它可以为您包装任何类型的内容。它可能也适合您的用例
嗯,是的,你知道。我想这是一种选择。将其称为和*object
是最便宜/最简单的方法吗?(如果允许的话(我会检查。)我可以想到的两种不使用reflect
包的方法是a:=b;return&a
和return&thistype{thisfield:b.thisfield,thisotherfield:b.thisotherfield}
。我还没有做过基准测试,但是前者使用的指令更少,它使用的代码更少,维护问题也更少,所以我会继续。干杯在中,我选择元组(接口{},标志)作为通道负载。有趣的是,我昨天推了它。