Heim >Backend-Entwicklung >Golang >Wie entferne ich Go-String-Literale aus einem AST?

Wie entferne ich Go-String-Literale aus einem AST?

Barbara Streisand
Barbara StreisandOriginal
2024-12-05 13:07:10299Durchsuche

How to Unquote Go String Literals from an 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!

Stellungnahme:
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