Go - 是否可以将原始字符串文字转换为解释的字符串文字?

Tsh*_*ane 8 string ansi-escape go

在 Go 中是否可以将原始字符串文字转换为解释字符串文字?(参见语言规范

\n

我有一个原始字符串文字,但我想将使用解释字符串文字 \xe2\x80\x94 得到的内容打印到控制台,即使用转义序列格式化的文本输出。

\n

例如,打印这个原始字符串文字给出

\n
s := `\\033[1mString in bold.\\033[0m`\nprintln(s) // \\033[1mString in bold.\\033[0m\n
Run Code Online (Sandbox Code Playgroud)\n

但我想要得到同样的结果

\n
s := "\\033[1mString in bold.\\033[0m"\nprintln(s) // String in bold. (In bold)\n
Run Code Online (Sandbox Code Playgroud)\n

对于上下文,我尝试打印使用转义序列格式化的文本文件的内容

\n
f, _ := := ioutil.ReadFile("file.txt")\nprintln(string(f))\n
Run Code Online (Sandbox Code Playgroud)\n

但输出是前一种方式。

\n

icz*_*cza 8

使用strconv.Unquote()

s := `\033[1mString in bold.\033[0m`

s2, err := strconv.Unquote(`"` + s + `"`)
if err != nil {
    panic(err)
}
fmt.Println("normal", s2)
Run Code Online (Sandbox Code Playgroud)

这将输出:

普通字符串以粗体显示。

请注意,string传递给的值strconv.Unquote()必须包含换行双引号或反引号,并且由于源s不包含换行引号,因此我在前面和后缀上添加了如下内容:

`"` + s + `"`
Run Code Online (Sandbox Code Playgroud)

查看相关问题:

如何使原始 unicode 编码内容可读?

Golang将整数转换为unicode字符

如何将 Go 字符串文字代码转换为其值?

如何转换HTML标签中的转义字符?