web-dev-qa-db-ja.com

golangテンプレートで文字列を連結する効率的な方法はありますか

たとえば、次のような関数があります。

 func TestFunc(str string) string {
 return strings.Trim(str," ")
 }

以下の例で実行されます。

 {{ $var := printf "%s%s" "x" "y" }}
 {{ TestFunc $var }}

テンプレート内の演算子で文字列を連結する方法はありますか?

 {{ $var := "y" }}
 {{ TestFunc "x" + $var }}

または

 {{ $var := "y" }}
 {{ TestFunc "x" + {$var} }}

オペランドエラーで予期しない「+」が発生します。

ドキュメントで見つかりませんでした( https://golang.org/pkg/text/template/

7

Goテンプレートには演算子がないため、文字列を演算子で連結する方法はありません。

質問に示されているようにprintf関数を使用するか、単一のテンプレート式で呼び出しを組み合わせます。

{{ TestFunc (printf "%s%s" "x" "y") }}

TestFunc引数の文字列を常に連結する必要がある場合は、連結を処理するためにTestFuncを記述します。

func TestFunc(strs ...string) string {
   return strings.Trim(strings.Join(strs, ""), " ")
}

{{ TestFunc "x"  $var }}
10
Cerise Limón