GoLang从文件中加载的Unicode文字打印表情符号

I am attempting to print Unicode emoji characters loaded from a JSON file using GoLang. When I load and unmarshall my file, the struct field passed to fmt.Println, only prints the escaped string sequence. For example, one string is stored within the file as {..."Unicode":"\\U0001f47f"} and printing it yields \U0001f417 and not the emoji character. Calling fmt.Printf("%q", str) yields \\U0001f417. I wasn't able to find a solution and I am bit stumped. I have attempted to remove the escape sequence and concatenate it within a template string, but it has no impact. I also attempted to use a string buffer but it didn't work either. Any advice is very much appreciated!

Use the following function to convert a rune specified in the format \Uxxxxxxxx to the actual rune:

func unquoteCodePoint(s string) (rune, error) {
    // 16 specifies hex encoding
    // 32 is size in bits of the rune type
    r, err := strconv.ParseInt(strings.TrimPrefix(s, "\\U"), 16, 32)
    return rune(r), err
}

A variation is to convert to a string instead of a rune:

func unquoteCodePoint(s string) (string, error) {
    r, err := strconv.ParseInt(strings.TrimPrefix(s, "\\U"), 16, 32)
    return string(r), err
}

Use the string version like this:

s, err := unquoteCodePoint("\U0001f47f")
if err != nil {
// handle error
}
fmt.Printf("%s
", s) // prints

You can do this? https://play.golang.org/p/4mFQfyqeAXN

package main

import (
    "fmt"
    "html"
    "strconv"
    "strings"
)

func main() {
    xx := "\\U0001f47f"

    // Hex String
    h := strings.ReplaceAll(xx, "\\U", "0x")

    // Hex to Int
    i, _ := strconv.ParseInt(h, 0, 64)

    // Unescape the string (HTML Entity -> String).
    str := html.UnescapeString(string(i))

    // Display the emoji.
    fmt.Println(str)
}