V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
sunmoon1983
V2EX  ›  Go 编程语言

golang 的模板中可以通过动态的 key 取 map 中的值吗?

  •  
  •   sunmoon1983 · 2021-03-24 08:35:39 +08:00 · 1750 次点击
    这是一个创建于 1121 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个 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}}
    
    5 条回复    2021-03-24 09:35:07 +08:00
    nanjishidu
        1
    nanjishidu  
       2021-03-24 08:54:41 +08:00
    好像遇到过 模板中先声明赋值一下 datamap
    imherer
        3
    imherer  
       2021-03-24 09:13:08 +08:00
    ````
    for _, key := range keyList {
    fmt.Println(dataMap[key])
    }
    ````
    不知道为什么 贴完整代码提示要验证手机,那就贴关键部分吧
    imherer
        4
    imherer  
       2021-03-24 09:14:06 +08:00
    @imherer 不好意思看错了,说的是模板
    sunmoon1983
        5
    sunmoon1983  
    OP
       2021-03-24 09:35:07 +08:00
    谢谢大家,我找到方法了
    ```
    {{range $item := index $.dataList $date}}
    <li><b></b><span>{{$item.created_at | date "m-d"}}:<a href="{{$item.url}}">{{$item.title}}</a> </span></li>
    {{end}}
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1404 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:50 · PVG 07:50 · LAX 16:50 · JFK 19:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.