Go で「Maybe」または「option」型をシミュレートする良い方法はありますか? 質問する

Go で「Maybe」または「option」型をシミュレートする良い方法はありますか? 質問する

を介してリクエストへの応答を送信しています。chan Xここで、は構造体です。リクエストは検索操作なので、理想的には を返すか、見つからなかったことを報告できるXようにしたいと思います。X

Maybe XこれはHaskell では 、 OCaml では のタスクになりますx option。Go でこれを行う適切な方法はありますか? ポインターを返さないので (返している元のオブジェクトは後で変更される可能性があるため)、 を返すことはできませんnil

編集:現在は にしてchan interface{}または を送信していますXnil、これは見苦しく、型の安全性に反します。

ベストアンサー1

私はポインタ型を使用します。

  • Maybe X=*X
  • Nothing=nil
  • Just x=&x

おすすめ記事