Repository navigation
Go 1.27 の昇格したフィールドの書き方に、規約と flow ツールを合わせた。
規約の本文(rule/decision-pattern.md)が変わったので、規約バージョンは v0.1.4 になる。本文だけを取り込んでいる場合も取り込み直す。
規約: その段で確定させる事実は昇格したフィールドで書く
Go 1.27 から、埋め込んだ struct のフィールドを composite literal に直接書ける。go fix(modernize の embedlit)は入れ子のリテラルをこの形に書き換えるので、規約の例をこちらに揃えた。
// これまで
return XxxNeedBlock{
xxxFactsArticle: xxxFactsArticle{ArticleID: article.ID, AuthorID: article.AuthorID},
}
// これから(Go 1.27 以降)
return XxxNeedBlock{
ArticleID: article.ID,
AuthorID: article.AuthorID,
}- 型の定義では、これまでどおり事実の struct を埋め込む
- 前段から引き継ぐ事実は、これまでどおり
xxxFactsArticle: s.xxxFactsArticleと struct ごと渡す - Go 1.26 以前は入れ子のリテラルで書く
exhaustruct による書き漏らしの検出も、この書き方に合わせて説明を直した。引き継ぎの漏れは struct 1 つの欠落として、その段で確定させる事実の漏れは足りないフィールドとして出る。
flow: 昇格したフィールドで書いた事実が終端のラベルに載っていた
終端のラベルからは埋め込んだ事実を除いているが、判定がキーが埋め込みのフィールド名のときにしか効いていなかった。昇格したフィールドで書くと事実がラベルに載り、事実の値が経路ごとに違うと、同じ結末の終端が別々のノードに割れていた。
これまで: n1(["Decided<br/>- UserID: id<br/>- Done: true"])
これから: n1(["Decided<br/>- Done: true"])
入れ子で書いた場合の出力は変わらない。
Full Changelog: v0.1.3...v0.1.4