Heim >Backend-Entwicklung >Golang >Wie entferne ich Go-String-Literale aus einem AST?
Anführungszeichen von Go-String-Literalen aus dem Syntaxbaum entfernen
Beim Durchlaufen eines Go-Syntaxbaums kann es erforderlich sein, den tatsächlichen Wert eines Strings zu extrahieren Literal, dargestellt als ast.BasicLit-Knoten, wobei Kind auf token.STRING gesetzt ist. Dieser Knoten enthält jedoch zunächst den Go-Code, der die Zeichenfolge darstellt, nicht ihren Literalwert.
Lösung:
Um den Go-String-Literalcode in seinen tatsächlichen Wert umzuwandeln, Verwenden Sie die Funktion strconv.Unquote(). Diese Funktion entfernt die Anführungszeichen aus einer in Anführungszeichen gesetzten Zeichenfolge, sodass Sie den rohen Zeichenfolgenwert erhalten können.
Hinweis:
strconv.Unquote() kann nur in eingeschlossene Zeichenfolgen Anführungszeichen entfernen Anführungszeichen (entweder einfach oder doppelt). Wenn das Zeichenfolgenliteral nicht in Anführungszeichen eingeschlossen ist, müssen Sie diese manuell hinzufügen, bevor Sie die Funktion verwenden.
Beispiel:
import ( "fmt" "strconv" ) func main() { // Given a quoted string quotedString := "`Hi`" // Unquote it unquotedString, err := strconv.Unquote(quotedString) if err != nil { fmt.Println("Error:", err) } else { fmt.Println(unquotedString) // Prints "Hi" } // Given an unquoted string unquotedString2 := "Hi" // Add quotes and unquote it quotedString2 := strconv.Quote(unquotedString2) unquotedString2, err = strconv.Unquote(quotedString2) if err != nil { fmt.Println("Error:", err) } else { fmt.Println(unquotedString2) // Also prints "Hi" } }
Das obige ist der detaillierte Inhalt vonWie entferne ich Go-String-Literale aus einem AST?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!