Golang Go语言中处理 yaml 时, 如何转义单引号, 双引号?
Golang Go语言中处理 yaml 时, 如何转义单引号, 双引号?
#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"
更多关于Golang Go语言中处理 yaml 时, 如何转义单引号, 双引号?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
type Sample struct {
Single template.HTML yaml:"single"
Double template.HTML yaml:"double"
}
感谢~
你这代码 和 yaml 没半毛钱关系 是 template 干的
import “html/template” => import “text/template”
在Golang中处理YAML文件时,转义单引号和双引号的需求通常源自于需要在YAML字符串中包含这些字符而不破坏YAML的结构或语法。YAML本身对单引号和双引号的使用有特定的规则,以下是处理这些字符的几种方法:
-
双引号包裹字符串:在YAML中,你可以使用双引号来包裹整个字符串,这样可以在字符串内部直接使用单引号而无需转义。例如:
key: "This is a 'single quote' and this is a double \"quote\"."
-
单引号包裹字符串:类似地,使用单引号包裹字符串时,可以在字符串内部直接使用双引号而无需转义。但注意,单引号内的单引号需要转义。例如:
key: 'This is a double "quote" and this is an escaped \'single quote\'.'
-
使用反斜杠转义:在双引号包裹的字符串中,你可以使用反斜杠(
\
)来转义双引号或单引号。例如:key: "This is an escaped \"double quote\" and an escaped 'single quote'."
在Golang代码中处理YAML时,这些规则同样适用。你只需确保在构建或解析YAML字符串时遵循这些规则即可。使用像gopkg.in/yaml.v2
这样的YAML库可以方便地处理YAML数据的编码和解码。确保在编码YAML数据前,字符串已经按照上述规则进行了适当的转义。