golang 处理 yaml 时, 如何转义单引号, 双引号?

2020-10-12 09:31:32 +08:00
 suueyoung
#sample.yml
single: |
    a single quote'
double: |
    a double quote"
// main.go
package main

import (
	"html/template"
	"io/ioutil"
	"log"
	"os"

	"gopkg.in/yaml.v2"
)

const Template = `{{ .Single}}
---
{{ .Double}}`

type Sample struct {
	Single string `yaml:"single"`
	Double string `yaml:"double"`
}

func main() {
	file, err := ioutil.ReadFile("sample.yml")
	if err != nil {
		log.Fatal(err)
	}
	s := new(Sample)
	err = yaml.Unmarshal(file, s)
	if err != nil {
		log.Fatal(err)
	}

	t, err := template.New("s").Parse(Template)
	if err != nil {
		log.Fatal(err)
	}
	err = t.Execute(os.Stdout, s)
	if err != nil {
		log.Fatal()
	}
}

打印出来的是 ' 这样的字符.

如果想要保留原始的 ' " , 要如何做呀?

$ go run ./main.go
a single quote'

---
a double quote"
2824 次点击
所在节点    Go 编程语言
4 条回复
vZexc0m
2020-10-12 09:41:06 +08:00
heimeil
2020-10-12 09:54:23 +08:00
type Sample struct {
Single template.HTML `yaml:"single"`
Double template.HTML `yaml:"double"`
}
suueyoung
2020-10-12 11:21:56 +08:00
@heimeil 感谢~
zunceng
2020-10-12 13:59:03 +08:00
你这代码 和 yaml 没半毛钱关系 是 template 干的

import “html/template” => import “text/template”

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/714044

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX