これの話
str := "\u3053\u3093\u306b\u3061\u306f\uff0c\u4e16\u754c\uff01" fmt.Println(str) // こんにちは,世界!
だが,
str := `\u3053\u3093\u306b\u3061\u306f\uff0c\u4e16\u754c\uff01` fmt.Println(str) // \u3053\u3093\u306b\u3061\u306f\uff0c\u4e16\u754c\uff01
なので,ダブルクオートで囲ってから,strconv.Unquote()
を使うと,
str := `\u3053\u3093\u306b\u3061\u306f\uff0c\u4e16\u754c\uff01` unquoted, _ := strconv.Unquote(`"` + str + `"`) fmt.Println(str) // こんにちは,世界!
となる.
ファイルから読む場合,
f, _ := ioutil.ReadFile("text.txt") str := strings.TrimRight(string(f), "\n") unquoted, _ := strconv.Unquote(`"` + str + `"`)
という順番.
StringIO 的にやるには,
f := bytes.NewBufferString(`\u3053\u3093\u306b\u3061\u306f\uff0c\u4e16\u754c\uff01`).Bytes() str := strings.TrimRight(string(f), "\n") unquoted, _ := strconv.Unquote(`"` + str + `"`)
でいいと思われる.