Golang Go语言中模板是否可以通过动态的key取map中的值
Golang Go语言中模板是否可以通过动态的key取map中的值
我有一个 slice
keyList:=[ "2021-02", "2020-08", "2020-07", "2020-05", "2020-02", "2020-01", ]
还有一个 map
dataMap := map[string]int{
"2021-02":123,
"2020-08":234,
"2020-07":234234,
"2020-05":23423,
"2020-02":345345345,
"2020-01":456456,
}
想在模板中通过循环 slice 得到 map 中的值 比如
{{range $index, $date := .keyList}}
{{if .dataMap.$date}} # 这里貌似不对呀,不知道应该怎么取
{{range $key,$item := .dataList.$date}}
<p>{{$date}}:{{$item}}</p>
{{end}}
{{end}}
{{end}}
更多关于Golang Go语言中模板是否可以通过动态的key取map中的值的实战教程也可以访问 https://www.itying.com/category-94-b0.html
好像遇到过 模板中先声明赋值一下 datamap
更多关于Golang Go语言中模板是否可以通过动态的key取map中的值的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
<br> for _, key := range keyList {<br> fmt.Println(dataMap[key])<br> }<br>
不知道为什么 贴完整代码提示要验证手机,那就贴关键部分吧
不好意思看错了,说的是模板
谢谢大家,我找到方法了<br>{{range $item := index $.dataList $date}}<br><li><b></b><span>{{$item.created_at | date "m-d"}}:<a href="{{$item.url}}">{{$item.title}}</a> </span></li><br>{{end}}<br>
在Golang(Go语言)中,模板(template)系统确实支持从map中取值,但是直接通过动态key来访问map的值在标准库的text/template
和html/template
中并不直接支持。这是因为模板设计之初就强调简单性和安全性,避免执行过于复杂的逻辑。
不过,你可以通过一些变通的方法来实现这一需求。一种常见的方法是,在将数据传递给模板之前,先对数据进行预处理,将需要动态访问的map值提取出来,作为独立的变量传递给模板。
例如,如果你的map是data := map[string]interface{}{"key1": "value1", "key2": "value2"}
,并且你想根据一个动态key(比如keyVar := "key1"
)来获取对应的值,你可以在将数据传递给模板之前,创建一个新的变量value := data[keyVar]
,然后将value
传递给模板。
另一种方法是自定义模板函数(template function),但这通常涉及到更多的设置和复杂性,包括注册自定义函数到模板中。这种方法虽然功能强大,但也可能引入安全风险,因为它允许模板执行更复杂的逻辑。
总之,虽然Go语言的模板系统不直接支持通过动态key访问map的值,但通过预处理数据或自定义模板函数等方法,你可以实现类似的功能。在实际开发中,选择哪种方法取决于你的具体需求和项目的复杂度。