有没有一种高效的方法来拼接字符串?

20

例如,有一个这样的函数:

 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/)中没有找到相关信息。

1个回答

24

由于Go模板没有运算符,因此无法使用运算符来连接字符串。

可以像问题中所示使用printf函数,或将调用组合成单个模板表达式:

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

如果你总是需要将字符串连接起来作为TestFunc参数,那么编写TestFunc以处理连接:

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

{{ TestFunc "x"  $var }}

1
请参见@gyoza https://github.com/hashicorp/consul-template/issues/267#issuecomment-386416693 - 030

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接