我正在尝试使用在Go模板范围循环外声明的变量来查看上一篇文章是否与当前帖子发生在同一天.这是一个简化的例子.
.Posts一组帖子结构在哪里,每个结构都有一个.Content和一个.Date.
{{ $prevDate := "" }}
{{ range $post := .Posts }}
{{ if ne $prevDate $post.Date }}
<div class="post-date">Posts dated: {{ $post.Date }}</div>
{{ end }}
<div class="post-content">{{ $post.Content }}</div>
{{ $prevDate := $post.Date }}
{{ end }}
Run Code Online (Sandbox Code Playgroud)
问题是$prevDate似乎""在循环的每次迭代开始时重置为.
任何人都可以帮助我理解为什么$prevDate在每次迭代时重置值,并且可能建议一种方法来完成我在这里尝试做的事情?
如果我有这样的HTML文件,我怎么能在Golang中做:
<html>
<head lang="en">
</head>
<body>
<header>{{.Header}}</header>
<div class="panel panel-default">
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想将一部分代码嵌入到其他文件的头文件标签中,如下所示:
<div id="logo"></div><div id="motto"></div>
Run Code Online (Sandbox Code Playgroud)
我的尝试:
header, _ := template.ParseFiles("header.html")
c := Content{Header: ""}
header.Execute(c.Header, nil)
index := template.Must(template.ParseFiles("index.html"))
index.Execute(w, c)
Run Code Online (Sandbox Code Playgroud) 我用的是"text/template"模块.
我有像这样的结构来解析Blogger中的XML
type Media struct {
ThumbnailUrl string `xml:"url,attr"`
}
type Entry struct {
ID string `xml:"id"`
Published Date `xml:"published"`
Updated Date `xml:"updated"`
Draft Draft `xml:"control>draft"`
Title string `xml:"title"`
Content string `xml:"content"`
Tags Tags `xml:"category"`
Author Author `xml:"author"`
Media Media `xml:"thumbnail"`
Extra string
}
Run Code Online (Sandbox Code Playgroud)
然后我像这样创建Go Template
[image]
src = "{{ replace .Media.ThumbnailUrl 's72-c' 's1600' }}"
link = ""
thumblink = "{{ .Media.ThumbnailUrl }}"
alt = ""
title = ""
author = ""
license = ""
licenseLink = "" …Run Code Online (Sandbox Code Playgroud) 在Go模板中,您可以检索如下字段:
template.Parse("<html><body>{{ .Title }}</body></html>")
template.Execute(w, myObject)
Run Code Online (Sandbox Code Playgroud)
您如何"内联"当前的UTC年份?我想做这样的事情:
template.Parse("<html><body>The current year is {{time.Time.Now().UTC().Year()}}</body></html>")
Run Code Online (Sandbox Code Playgroud)
但它返回错误:
恐慌:模板:功能"时间"未定义
为了在模板中使用revel'seven关键字,我想在使用range. 有什么办法吗?我的地图具有以下结构:
map[string][]string
Run Code Online (Sandbox Code Playgroud) 我只需打印Kubernetes Events的特定字段,按特定字段排序.
这是为了帮助我收集有关我的命名空间的遥测和分析
我怎么能这样做?
该程序输出简单
1,4,2,
但我想打印
1,4,2。
如您所见,逗号在数组的每个项目之后打印。
package main
import "os"
import "text/template"
func main() {
params := map[string]interface{}{
"items": [3]int{1, 4, 2},
}
tpl := "{{range $i, $el := .items}}{{$el}},{{end}}"
lister, _ := template.New("foo").Parse(tpl)
lister.Execute(os.Stdout, params)
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以更改,{{range $i, $el := .items}}{{$el}},{{end}}并确保最后一项将打印“。”。代替 ”,”
我想允许我们的开发人员将动态参数传递给头盔模板(Kubernetes作业)。目前,我在舵模板中的参数有些静态(除了某些值),看起来像这样
Args:
--arg1
value1
--arg2
value2
--sql-cmd
select * from db
Run Code Online (Sandbox Code Playgroud)
如果使用不带Kubernetes的docker容器运行任务,我将传递如下参数:
docker run my-image --arg1 value1 --arg2 value2 --sql-cmd "select * from db"
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以将舵图中的参数模板化,从而可以将任意数量的参数传递给模板。
例如。
cat values.yaml
...
arguments: --arg1 value1 --arg2 value2 --sql-cmd "select * from db"
...
Run Code Online (Sandbox Code Playgroud)
要么
cat values.yaml
...
arguments: --arg3 value3
...
Run Code Online (Sandbox Code Playgroud)
我尝试了几种方法,但没有成功。这是一个例子:
Args:
{{ range .Values.arguments }}
{{ . }}
{{ end }}
Run Code Online (Sandbox Code Playgroud) 我试图将 values.yaml 中的 env vars 列表变成一个 secret.yaml 文件,其中包含“secret”类型的 envs 列表。这个想法是只在至少一种类型等于“秘密”时才创建这个秘密文件。
例如:
值.yaml
env:
- name: PLAIN_TEXT_ENV_VAR1
type: plain
value: text value
- name: PLAIN_TEXT_ENV_VAR2
type: plain
value: text value
- name: TOP_SECRET_ENV_VAR_1
type: secret
- name: TOP_SECRET_ENV_VAR_2
type: secret
- name: TOP_SECRET_ENV_VAR_3
type: secret
Run Code Online (Sandbox Code Playgroud)
生成的 secret.yaml
kind: Secret
metadata:
name: test
data:
TOP_SECRET_ENV_VAR_1: change_me
TOP_SECRET_ENV_VAR_2: change_me
TOP_SECRET_ENV_VAR_3: change_me
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用范围迭代、布尔变量和 if 语句来创建一些流控制,但是在我将它更改为另一个值后,go 模板似乎忽略了我的 ifs。现在我的秘密模板如下所示。
{{ $flowcontrol := true -}}
{{ if $flowcontrol -}}
{{ range $env := $.Values.env -}}
{{ if …Run Code Online (Sandbox Code Playgroud) 我正在尝试将入口添加到我的 nginx 容器中。
以下入口模板给我“解析错误(<>/ingress.yaml:71:意外的 EOF)”。我尝试标记可能丢失的结束语句,但即使在文件末尾添加任意结束也无法修复它。我不知道是什么原因导致这个 EOF。
所以问题是一般性的:是什么导致文件中出现“意外的 EOF”?
{{- if .Values.web.ingress.enabled }}
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: {{ .Release.Name }}-proxy-ingress
labels:
tier: intelowl
component: proxy
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.labels }}
{{ toYaml . | indent 4 }}
{{- end }} # {{- with .Values.labels }}
{{- if .Values.web.ingress.annotations }}
annotations:
{{- with .Values.web.ingress.annotations }}
{{ toYaml . | indent 4 }}
{{- end }} # {{- with .Values.web.ingress.annotations …Run Code Online (Sandbox Code Playgroud)