So rufen Sie den String-Literalwert von Go AST ab
Beim Durchlaufen eines Go-Syntaxbaums, um Aufrufe einer bestimmten Funktion zu identifizieren, die einen String entgegennimmt Wenn Sie ein literales Argument verwenden, stoßen Sie möglicherweise auf einen ast.BasicLit-Knoten mit Kind == token.STRING. Das Wertfeld dieses Knotens enthält jedoch Go-Syntax und nicht den tatsächlichen Zeichenfolgenwert, den es darstellt.
Um den Literalwert der Zeichenfolge zu erhalten, verwenden Sie die Funktion strconv.Unquote(). Beachten Sie jedoch, dass diese Funktion nur Zeichenfolgen in Anführungszeichen setzt, die in Anführungszeichen eingeschlossen sind. Wenn die Zeichenfolge in ast.BasicLit nicht in Anführungszeichen steht, müssen Sie ihr manuell das entsprechende Anführungszeichen voranstellen.
Beispiel:
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!" } }
Ausgabe :
Hello World!
Das obige ist der detaillierte Inhalt vonWie extrahiere ich den Literal-String-Wert aus dem „ast.BasicLit'-Knoten eines Go AST?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!