草庐IT

template_func

全部标签

go - 使用两个返回参数为 func 创建 chan

是否可以为函数boolInt创建channel没有重新定义它?packagemainfuncboolInt()(bool,int){returnfalse,1}funcmain(){chanBool:=make(chanbool)chanInt:=make(chanint)gofunc(){//chanBool当我尝试在单值上下文中使用它时chanBool我得到一个错误:multiple-valueboolInt()insingle-valuecontext.在2值上下文中:chanBool,chanInt出现错误:syntaxerror:unexpectedsemicolonorne

templates - 如何处理模板中的字符串格式

我将一个结构传递给一个模板,该模板有时包含对于显示来说太长的字符串。在任何其他语言中,我只会在模板本身中附加格式规则。在模板中完成格式化的惯用方法是什么?例子:typestructMyStruct{somethingstringanotherThingstring}在模板中{{range.Rows}}//NOTE!RowsisanarrayofMyStructobjects{{.something}}{{.anotherThing}}{{end}}如果上面的内容不明显,那么问题是“您将如何确保.anotherThing或.something不显示超过40个字符?一个解决方案可能是使结构

go - html/template 中 ParseFiles 函数的不同行为

我不明白为什么func(t*Template)Parsefiles(...与funcParseFiles(...的行为不同。这两个函数都来自“html/模板”包。packageexampleimport("html/template""io/ioutil""testing")funcMakeTemplate1(pathstring)*template.Template{returntemplate.Must(template.ParseFiles(path))}funcMakeTemplate2(pathstring)*template.Template{returntemplate.

templates - 在 Go 模板中请求上下文

我想在Go中编写这样一个条件片段HTMLtemplate:{{ifisUserAdmin}}Gotothebigrednuclearbutton{{end}}但是,这不是直接可能的,因为模板不知道request触发了它的执行,所以它无法确定用户是否是管理员。是否有一些正常的方法可以实现这一点?我提前指出:我不想使用Pipelines对于此特定数据(请参阅otherquestion关于此)我承认只有处理程序/Controller应该处理逻辑,而View应该只进行渲染。但是条件{{ifisUserAdmin}}本身并不是逻辑,它是利用Controller已经计算出的bool值的必要结构。F

go - 将 template.HTML 直接渲染到模板中

我最近更换了数据存储,作为副作用,我不得不将结构字段从template.HTML更改为string以与marshaller/兼容数据库驱动程序。此字段RenderedDesc包含通过russross/blackfriday传递的呈现的HTML.以前我可以将整个结构“按原样”传递到模板中,然后在模板中调用{{.RenderedDesc}}。因为它现在是一个字符串,所以我添加了一个过滤器以在模板渲染时将其转换回:templates.gofuncRenderUnsafe(sstring)template.HTML{returntemplate.HTML(s)}template.FuncMap

templates - 有没有办法列出使用过的变量?

假设我有一个基本的go文本/模板:{{.var}}isanother{{.var2}}我想获取模板中使用的变量名称的数组,以便能够在我传递给执行的数据中不可用时跳过执行,是否可以通过某种方式做到这一点?因为我的数据不是结构而是映射,所以执行.var总是会返回一些东西:如果它不存在,当我希望在执行模板时出现错误时它会返回一个空字符串。所以对于上面的例子,我希望得到:[varvar2] 最佳答案 如果未设置值,请使用返回错误的模板函数。像这样:template.FuncMap(map[string]interface{}{"requir

go - 如何使用text/template预定义的 "call"函数?

我试图了解如何在text/template包中使用call函数。这是示例:typeHumanstruct{Namestring}func(h*Human)Say(strstring)string{returnstr}funcmain(){constletter=`{{.Name}}wantstosay{{"blabla"|.Say}}{{.Name}}wantstryagain,{{call.Say"blabla"}}.`varh=&Human{"Tim"}t:=template.Must(template.New("").Parse(letter))err:=t.Execute(os

go - 为什么使用 Go interface{} 作为参数,当我用字符串调用 func 时,它会强制转换一个 alloc/ns?

我有一个以interface{}作为参数的Go函数。当我用字符串调用函数时,它会强制转换一个alloc/ns。为什么?funcfoo(...interface{})error{....}funcuse(){varstr="useit"e:=foo(str)_=e} 最佳答案 在内部,一个接口(interface)变量是一个二字结构。第一个词是指向变量动态类型信息的指针。第二个单词将(a)包含变量的动态值(如果它适合一个单词),或者(b)包含一个指向内存的指针,如果它更大的话。一个字符串变量比一个单词大,因为它保存了它的长度和指向底层

templates - text/html 模板包中的 "range"操作和 "pipeline"说明。戈朗

我试图在text/html模板包中获得一些优点。我已经从golang站点阅读了它的文档。很难理解.(点)在一般和一定时间范围内行动。“pipeline”到底是什么意思,可能因为我的英文不是母语,所以比较难理解):{{pipeline}}Thedefaulttextualrepresentationofthevalueofthepipelineiscopiedtotheoutput.让我们考虑一个例子:data:=map[string]interface{}{"struct":&Order{ID:1,CustID:2,Total:3.65,Name:"Something",},"name

templates - Golang 模板和有效字段测试

在Go的database/sql包中,有一堆Null[Type]结构可以帮助将数据库值(及其可能的空值)映射到代码中。我试图弄清楚如何测试结构field是否为null,或者换句话说,当它的Valid属性为false时。打印SQL字段的推荐方法是使用.Value属性,如下所示:{{.MyStruct.MyField.Value}}效果很好。但假设我有一些稍微复杂的东西,我需要根据其他东西来测试值,例如:{{range.SomeSlice}}{{.}}{{end}}碰巧,这也很有效,除非.MyField无效,在这种情况下我会收到错误消息“调用eq时出错:用于比较的类型无效”。该错误是有道理