我需要使用 go 模板连接一个作用域变量和一个字符串,如下所示:
{{ $url := .Release.Namespace + ".myurl.com" }}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
Mic*_*rks 15
我相信您来自 Helm 世界,因为.Release.Namespace并且可能不想要其中的 Go 部分。
Helm 处理您的 YAML 后,其中的所有内容都{{}}将被删除。要实现局部范围的变量,您可以使用两个{{}}值。
第一个是{{ $url := print .Release.Namespace ".myurl.com" }}。Helm 处理 YAML 后不会产生任何内容,但会将局部变量分配$url给 的值.Release.Namespace和常量.myurl.com。
接下来是{{ $url }},它将允许您使用存储在变量中的值$url。
将其组合在一起{{ $url := print .Release.Namespace ".myurl.com" }}{{ $url }}将产生subdomain.myurl.comshould 的值.Release.Namespacebe subdomain。
package main
import (
"log"
"os"
"text/template"
)
const (
// exampleTemplate is a template for a StackOverflow example.
exampleTemplate = `{{ $url := print .Release.Namespace ".myurl.com" }}{{ $url }}`
)
// templateData is the data structure to pass to the template.
type templateData struct {
Release Release
}
// Release is a fake Go data structure for this example.
type Release struct {
Namespace string
}
func main() {
// Create the template.
tmpl := template.Must(template.New("example").Parse(exampleTemplate))
// Create the data to put into the template.
data := templateData{Release: Release{Namespace: "subdomain"}}
// Execute the template.
if err := tmpl.Execute(os.Stdout, data); err != nil {
log.Fatalf("Failed to execute template.\nError: %s", err.Error())
}
}
Run Code Online (Sandbox Code Playgroud)