如何在不返回值的模板中执行功能?这是示例:
func main() {
u, err := url.Parse("http://example.com/test?param1=true¶m2=true")
if err != nil {
log.Fatal(err)
}
m := u.Query()
m.Del("param1") // param1 successful deleted!
u.RawQuery = m.Encode()
fmt.Println(u.RawQuery)
const tmpl = `
{{$m := .Query}}
{{$m.Del "param2"}} <!-- failed to delete param2! -->
{{.RawQuery}}
`
t := template.Must(template.New("").Parse(tmpl))
err = t.Execute(os.Stdout, u)
if err != nil {
log.Println("executing template:", err)
}
}
在play.golang.org中看到此代码
我知道模板中的逻辑不应该太多,但是对无返回值的运行函数的无知对我来说似乎是一个有趣的问题。
Go中的模板与其他语言(例如PHP)中的模板不同。使用template.FuncMap
为您的模板创建自定义功能。
package main
import (
"fmt"
"log"
"net/url"
"os"
"text/template"
)
func main() {
funcMap := template.FuncMap{
"delete": deleteMap,
}
u, err := url.Parse("http://example.com/test?param1=true¶m2=true")
if err != nil {
log.Fatal(err)
}
u = deleteMap(u, "param1") // works in regular code and templates
fmt.Println(u.RawQuery)
const tmpl = `
{{$m := delete . "param2"}} <!-- WORKS! -->
{{$m.RawQuery}}
`
t := template.New("").Funcs(funcMap)
t = template.Must(t.Parse(tmpl))
err = t.Execute(os.Stdout, u)
if err != nil {
log.Println("executing template:", err)
}
}
func deleteMap(u *url.URL, key string) *url.URL {
m := u.Query()
m.Del(key) // key successful deleted!
u.RawQuery = m.Encode()
return u
}
或者,尝试使用游乐场版本。
问题内容: 假设我有 如何从html / template使用此方法?我的模板中需要这样的东西: 问题答案: 只需省略括号就可以了。例: 根据文档,您可以调用任何返回一个值(任何类型)或两个值(如果第二个是type)的方法。在后一种情况下,如果该错误为非nil ,则将返回该错误并停止执行模板。
std=C14的g在函子类的模板方法(本身不是模板)上给我一个“无法推断模板参数'Key'”错误。我不知道为什么。代码看起来应该可以工作。 我正在实现一个2-3树,它有一个采用函子的层次顺序遍历方法。操作人员tree23代码基本上是这样的: 级别顺序遍历调用仿函数的函数调用操作符,向其传递两个参数。 函子非常简单:
我试图在测试中模拟一个调用,但我得到了一个错误,因为它调用了真正的方法,而不是模拟它。 这是我的方法 } 这是我的测试课 测试实际上调用了受保护的方法config Setter,并在设置代理时失败。帮助我理解我在这里做错了什么。
我开始把头撞到墙上,但我完全不明白如何在间谍类上调用真正的方法。 长话短说,我正在监视我的测试类,以存根一个私有方法。然后我想调用测试类的real void方法,但它说 testedmethod是一个空方法,不能用返回值来存根它! 问题是,我不需要把它存根。我也尝试过doCallRealMethod(),没有用。 我正在使用静态编程语言和Android Studio为我的Android项目运行一些
我学习了一些关于variadic模板的知识,并在Internet上搜索了一些示例,现在尝试编写一些棘手的代码来调用member一个variadic类模板的方法,其中包含一个字段。我不明白为什么它不起作用。拜托,救命。 以下是示例类: 和来自Main的呼叫: 错误: main.cpp 1>d:\drafts_tests\main.cpp(203):错误C2198:“void(__thiscall f
这是我的控制器: 这是我访问http://localhost:8080/area/1时得到的: 无法转换“java”类型的值。lang.String'转换为必需的类型'int';嵌套的例外是java。lang.NumberFormatException:对于输入字符串:“asd3333”] 我测试了这个随机返回,只是为了显示发生了什么...该方法首先用请求中的@PathVariable=1调用,然