Maison > développement back-end > Golang > Comment extraire la valeur de chaîne littérale du nœud « ast.BasicLit » d'un Go AST ?

Comment extraire la valeur de chaîne littérale du nœud « ast.BasicLit » d'un Go AST ?

Barbara Streisand
Libérer: 2024-12-26 11:45:10
original
941 Les gens l'ont consulté

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

Comment récupérer la valeur littérale d'une chaîne à partir de Go AST

Lors de la traversée d'un arbre syntaxique Go pour identifier les appels à une fonction spécifique qui prend une chaîne argument littéral, vous pouvez rencontrer un nœud ast.BasicLit avec Kind == token.STRING. Cependant, le champ de valeur de ce nœud contient la syntaxe Go plutôt que la valeur de chaîne réelle qu'il représente.

Pour obtenir la valeur littérale de la chaîne, utilisez la fonction strconv.Unquote(). Cependant, notez que cette fonction supprime uniquement les chaînes placées entre guillemets. Si la chaîne dans ast.BasicLit n'est pas entre guillemets, vous devez la pré-ajouter manuellement avec le caractère de guillemet approprié.

Exemple :

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!"
    }
}
Copier après la connexion

Sortie :

Hello World!
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal