Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Session title]: Go1.20からサポートされるtree構造のerrの紹介と、treeを考慮した複数マッチができるライブラリを作った話 #129

Closed
sivchari opened this issue Feb 6, 2023 · 0 comments
Assignees

Comments

@sivchari
Copy link
Member

sivchari commented Feb 6, 2023

Speaker

奥村 優哉

SNS Accounts

Twitter: @convto

Description

Go1.20からはtree構造のエラーがサポートされることになりました。
2022/1/31現在進行中の以下のrelease noteでも言及されています。
https://tip.golang.org/doc/go1.20#errors

もともとのproposalである golang/go#53435 での議論をふまえ、Go1.20時点では、標準errors.Is/Asは以下のデザインとなっています。

  • treeを深さ優先探索する
  • マッチしたものがあればそこで探索を打ち切り結果を返す
  • tree上のすべての枝がIs/Asにマッチすることを保証しない

ですが、tree構造とのマッチ判定はユースケースによってはさらにいくつかの要求が考えられます。たとえば

  • 分岐した全枝についての一致を確認するより厳密な同一性判定
  • treeのなかで一致した要素をすべて取り出す

などです。このようなより柔軟な要求に対して、現状の標準errors.Is/Asを利用することはできません。

今回は元となった "errors: add support for wrapping multiple errors" proposalでの議論をおさらいしつつ、標準errorsでは実現できないいくつかの要求についてマッチ処理を実装したので紹介します。
また、実装中に感じた課題などについても触れれればと思います。

実装したレポジトリは以下です。
https://github.com/convto/errortree

tree構造のerrはGo1.20から追加された新しい概念であり、整理のために多くの実験や議論が必要だと思っています。
この発表で該当の議論に関心を持つ方が増えれば嬉しいです。

Session type

Short Talk (20min)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants