【问题标题】:Go Template Functions [duplicate]Go 模板函数 [重复]
【发布时间】:2021-04-25 23:58:12
【问题描述】:

如何在 Go 模板中创建函数? 我正在尝试遍历传递给模板的目录树,但我不知道如何在不在模板中创建会调用自身的函数的情况下循环遍历子目录。

这是我想做的一些伪代码:

function loop(directory){
 for item in directory:
   if item.type == FOLDER:
     loop(item)
}

如果有任何不清楚的地方,我很乐意澄清。

【问题讨论】:

  • 你想在模板中创建函数?那是不可能的。您可以注册 Go 函数,通过这些函数可以从模板中调用。
  • @icza 你能举个例子吗?
  • 这能回答你的问题吗? Call a method from a Go template
  • 使用Template.Funcs()方法注册函数。

标签: go go-templates


【解决方案1】:
package main

import (
    "fmt"
    "io/ioutil"
    "log"
)

func  loop(folder string){
    files, err := ioutil.ReadDir(folder)
    if err != nil {
        log.Fatal(err)
    }
    for _, f := range files {
        if f.IsDir() {
            loop(f.Name())
        }
        fmt.Println(f.Name())
    }
}
func main()  {

    loop(".")
}

【讨论】:

  • 如何在模板中注册这个?另外,我如何从模板中调用它?
猜你喜欢
  • 1970-01-01
  • 2016-02-25
  • 2017-10-26
  • 2016-03-07
  • 1970-01-01
  • 2016-05-23
  • 2013-05-30
  • 2017-04-03
  • 1970-01-01
相关资源
最近更新 更多