Golang模板中使用什么分隔符比较合适?

Golang模板中使用什么分隔符比较合适? 我有这些分隔符,但我想看看其他选项?

"{{", "}}"
"((", "))"
"[[", "]]"
"#{", "}"
11 回复

我使用来自Jinja语法的{% %}。

更多关于Golang模板中使用什么分隔符比较合适?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


我只是想要我提到的那些分隔符的替代方案,我已经想不出其他办法了。

你是说你的模板里有“{{”、“}}”吗?你可以把这些分隔符作为变量填充进去,这不会影响整个模板的解析。

我认为这件事,主要考虑的是你的模板文本命中分隔符的概率,我目前使用的模板基本上不改变默认分隔符,因为模板是由我生成的。 如果这个模板文本不可控,我猜你可能需要统计概率。

我喜欢这个想法!其他建议: {[ ]} {( )}

[{ }] [( )]

([ ]) ({ })

等等…

我没有遇到任何错误,这里提供另一种方案:"#{""}"

我只是在寻找模板中可以使用的分隔符想法,是的,这无关紧要,但它能激发我的创造力。

这里还有一个:"«", "»"

嗯,这是一个简单的问题吗?我认为更改这个分隔符确实需要考虑模板文本的问题,如果模板文本中总是包含分隔符,那么就需要频繁处理。例如,HTML中的“</”和“>”。

作为一名代码编写者,我会考虑这个分隔符是否会一直干扰模板文本的自由书写。至于其他方面,当然是怎么方便怎么来。

如果你觉得我在胡说八道,那么很抱歉打扰了。

如果你只是在考虑 func (t *Template) Delims(left string, right string) *Template 这个方法?那么我认为这并不相关,你应该考虑模板文本命中率的问题。

例如,如果文本中有大量的 "{{",那么显然你不应该使用 "{{" 作为分隔符;如果只是少量触发,那就无关紧要了。

func (t *Template) Delims(left string, right string) *Template

你把事情搞得太复杂了,问题很简单,我只是想要两个字符串作为思路,你为什么搞得这么复杂?

例如,我不会使用 “aa”“bb” 这两个字符串作为分隔符,我必须使用有意义的字符,我在这里只是问了一个简单的问题,我还能用什么其他字符作为分隔符?

告诉我你是在开玩笑,因为这个问题太简单了。

我不太确定你想表达什么?我想你遇到了无法输出分隔符的问题?也许你应该写一些示例代码,让别人了解你的问题?如果是无法输出分隔符的问题,你可以试试这个:

	t2 := template.New("")
	parse, err := t2.Parse("abc{{.x}}d")
	if err != nil {
		panic(err)
	}
	bs := new(bytes.Buffer)
	parse.Execute(bs, map[string]string{
		"x": "{{",
	})
	fmt.Println(bs.String())

在Golang模板中,分隔符的选择取决于具体使用场景。以下是不同分隔符的示例:

  1. 默认分隔符 {{}}
package main

import (
    "os"
    "text/template"
)

func main() {
    tmpl := `Hello {{.Name}}!`
    t := template.Must(template.New("test").Parse(tmpl))
    t.Execute(os.Stdout, map[string]string{"Name": "World"})
}
  1. 自定义分隔符 (())
package main

import (
    "os"
    "text/template"
)

func main() {
    tmpl := `Hello ((.Name))!`
    t := template.Must(template.New("test").Delims("((", "))").Parse(tmpl))
    t.Execute(os.Stdout, map[string]string{"Name": "World"})
}
  1. 自定义分隔符 [[]]
package main

import (
    "os"
    "text/template"
)

func main() {
    tmpl := `Hello [[.Name]]!`
    t := template.Must(template.New("test").Delims("[[", "]]").Parse(tmpl))
    t.Execute(os.Stdout, map[string]string{"Name": "World"})
}
  1. 自定义分隔符 #{}
package main

import (
    "os"
    "text/template"
)

func main() {
    tmpl := `Hello #{.Name}!`
    t := template.Must(template.New("test").Delims("#{", "}").Parse(tmpl))
    t.Execute(os.Stdout, map[string]string{"Name": "World"})
}

选择分隔符时考虑以下因素:

  • 避免与模板内容冲突(如HTML、JavaScript、CSS)
  • 保持一致性
  • 考虑可读性

在HTML模板中常用{{}},在JavaScript模板中可能选择[[]]以避免冲突。

回到顶部