php editor Strawberry は今日、cuelang を使用して、Golang モジュールから生成されたプロンプト パターンの構造フィールドに条件を設定する方法を紹介します。 cuelang は、Golang とシームレスに統合される、データ構造を定義および検証するための強力な言語です。 Golang によって生成されたモジュールを使用する場合、構造体フィールドに条件を追加する必要がある状況によく遭遇します。この記事では、cuelang を使用してこの要件を達成する方法を詳細に説明し、誰もが cuelang の強力な機能をよりよく理解し、適用できるようにします。次に、この問題を段階的に分析し、誰もがよりよく理解できるように関連するサンプル コードを提供します。見てみましょう!
Golangモジュールから生成されるプロンプトパターンの特定の構造フィールドに追加の制約を設けたいと考えています。
次の schema.cue
は、対応する Golang モジュールから生成されます
ソース Golang モジュール (以下の例) でヒント アノテーションを指定しようとしましたが、生成された schema.cue
に正しい制約が生成されませんでした。
私が試みたもう 1 つのアプローチは、接続詞を使用してスキーマのインスタンスを拡張することでした。
CB79515A7EDA1BA1F8290B9FA56F2A98ただし、cue vet schema.cue test/badVersionValue.yaml
では、stdout
(badVersionValue.yaml
には が含まれます) に対してエラーは生成されませんでした。バージョン: badstring
。
次の手動で記述した schema.cue
このように、cue vet schema.cuetests/badVersionValue.yaml
が生成されます
このアプローチの欠点は、Golang ソース コード/信頼できる情報源から生成されたファイルを使用して反復するのではなく、ヒント パターン ファイルを最初から作成することになることです。
定義
に関して、レビュー用のプロンプトを適切に使用する方法を誤解していました。
cuetorials.com のこの例 に基づいて、「#Schema」 が存在する -d を指定できます。
次のような成功が見られるだけでなく、yaml ファイルの内容は
です。
リーリー
また、OP に従って既存のフィールドに制約を追加します:
期待した出力が生成されるようになりました
リーリー ###編集: これは、あらゆることに Golang モジュールを使用する人にとっては、より良いアプローチです。 Golang モジュールでは、構造体フィールドのアノテーションとして制約を配置できます。リーリー
cue get go app.go
を使用すると、次のような対応するapp_go_gen.cue が得られます。
リーリー
これは、上記で参照した cue vet ...
コマンドを実行する場合に有効です。つまり、Golang モジュールで制約を指定し、これらのアノテーションを構造体フィールドの制約として解釈する Cue スキーマを生成するだけで済みます。
以上がcuelangを使用して、Golangモジュールから生成されたヒントパターンの構造体フィールドに条件を付ける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。