ホームページ  >  記事  >  バックエンド開発  >  golang のテキスト/テン​​プレートは関数で始まります

golang のテキスト/テン​​プレートは関数で始まります

WBOY
WBOY転載
2024-02-06 11:15:03590ブラウズ

golang 文本/模板以函数开头

質問の内容

go text/templatestartswith のタイプが表示されませんパッケージ機能。これが最良の実装でしょうか?

{{if eq (slice $c 0 5) "begin"}}

正解


組み込みの startswithtemplate 関数はありません。

最もクリーンなのは、カスタム関数をその機能に登録する場合です:

リーリー

これは出力されます (go playground で試してください):

リーリー

カスタム関数を登録できない、または登録したくない場合、slice は文字列を処理しますが、注意が必要です。入力文字列が 5 バイトより短い場合は、テンプレート実行エラーが発生します。

代わりに (カスタム関数を登録したくない場合)、組み込みの printf 関数を使用することをお勧めします。ここで、 精度 は、文字列の長さです。比較した。 printf は、入力文字列が短い場合でもパニックしません:

リーリー

この出力は同じです。 go playground でこれを試してください。

プレフィックス (5) の長さをハードコーディングする必要がないため、hasprefix を使用する方が安全、クリーン、簡単であることに注意してください。

明示的なパラメータのインデックス付け を使用すると、この部分を動的にすることもできることに注意してください。 リーリー

ご覧のとおり、プレフィックス

5 のハードコードされた長さを取り除くことができます。これでも同じ内容が出力されます。go playground で試してください。

最後に注意すべき点: スライス文字列はインデックスを

バイト インデックス として解釈しますが、フォーマット文字列で使用される精度は ルーン カウント として解釈されます。

以上がgolang のテキスト/テン​​プレートは関数で始まりますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。