Heim > Backend-Entwicklung > Golang > Wie extrahiere ich den Literal-String-Wert aus dem „ast.BasicLit'-Knoten eines Go AST?

Wie extrahiere ich den Literal-String-Wert aus dem „ast.BasicLit'-Knoten eines Go AST?

Barbara Streisand
Freigeben: 2024-12-26 11:45:10
Original
943 Leute haben es durchsucht

How to Extract the Literal String Value from a Go AST's `ast.BasicLit` Node?

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!"
    }
}
Nach dem Login kopieren

Ausgabe :

Hello World!
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage