Вы можете использовать пакет strconv
для анализа строкового литерала, содержащего escape-последовательности.
Быстрый и грязный способ - просто добавить пропущенные кавычки и интерпретировать их как строку в кавычках, используя strconv.Unquote
s := `\xe2\x96\xb2`
s, err := strconv.Unquote(`"` + s + `"`)
Вы также можете напрямую анализировать строку по одному символу за раз (что делает Unquote
внутри), используя strconv.UnquoteChar
s := `\xe2\x96\xb2`
buf := make([]byte, 0, 3*len(s)/2)
for len(s) > 0 {
c, _, ss, err := strconv.UnquoteChar(s, 0)
if err != nil {
log.Fatal(err)
}
s = ss
buf = append(buf, byte(c))
}
s = string(buf)
https://play.golang.org/p/6SDij9d-aRr