Home

Sessions

Timetable

Floor Guide

Staff

English

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

Room A : A10-S

Go1.20からはtree構造のエラーがサポートされることになりました。 詳細は以下のrelease noteでも言及されています。 https://tip.golang.org/doc/go1.20#errors もともとのproposalである https://github.com/golang/go/issues/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から追加された新しい概念であり、整理のために多くの実験や議論が必要だと思っています。 この発表で該当の議論に関心を持つ方が増えれば嬉しいです。

Level: Intermediate /
Short Talk(20min)
奥村 優哉

奥村 優哉

株式会社LayerX

レイヤ低めの技術、暗号まわり、分散コンピューティングに興味があります

ツイート
gopher conductorgopher drummergopher trumpetergopher pom pomgopher flower blue