Maison >développement back-end >Golang >Comment supprimer les guillemets des littéraux de chaîne Go d'un AST ?

Comment supprimer les guillemets des littéraux de chaîne Go d'un AST ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-05 13:07:10299parcourir

How to Unquote Go String Literals from an AST?

Ne plus citer les littéraux de chaîne Go de l'arbre syntaxique

Lors du parcours d'un arbre syntaxique Go, il peut être nécessaire d'extraire la valeur réelle d'une chaîne littéral représenté comme un nœud ast.BasicLit avec Kind défini sur token.STRING. Cependant, ce nœud contient initialement le code Go représentant la chaîne, et non sa valeur littérale.

Solution :

Pour transformer le code littéral de la chaîne Go en sa valeur réelle, utilisez la fonction strconv.Unquote(). Cette fonction supprime les guillemets d'une chaîne entre guillemets, vous permettant d'obtenir la valeur brute de la chaîne.

Remarque :

strconv.Unquote() ne peut retirer les guillemets que des chaînes entourées de guillemets. guillemets (simples ou doubles). Si la chaîne littérale n'est pas placée entre guillemets, vous devez les ajouter manuellement avant d'utiliser la fonction.

Exemple :

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"
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn