Cara Mendapatkan Nilai Tersurat Rentetan daripada Go AST
Apabila melintasi pepohon sintaks Go untuk mengenal pasti panggilan ke fungsi tertentu yang mengambil rentetan hujah literal, anda mungkin menghadapi nod ast.BasicLit dengan Kind == token.STRING. Walau bagaimanapun, medan nilai nod ini mengandungi sintaks Go dan bukannya nilai rentetan sebenar yang diwakilinya.
Untuk mendapatkan nilai literal rentetan, gunakan fungsi strconv.Unquote(). Walau bagaimanapun, ambil perhatian bahawa fungsi ini hanya menyahtanda rentetan yang disertakan dalam petikan. Jika rentetan dalam ast.BasicLit tidak dipetik, anda mesti menambahkannya secara manual dengan aksara petikan yang sesuai.
Contoh:
package main import ( "fmt" "go/ast" "go/parser" "go/token" "strconv" ) func main() { fset := token.NewFileSet() node, _ := parser.ParseExpr(`` + "Hello World!" + `"`) switch node := node.(type) { case *ast.BasicLit: fmt.Println(strconv.Unquote(node.Value)) // Prints "Hello World!" } }
Output :
Hello World!
Atas ialah kandungan terperinci Bagaimana untuk Mengekstrak Nilai Rentetan Literal daripada Nod `ast.BasicLit` Go AST?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!