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
Barbara Streisandoriginal
2024-12-26 11:45:10948parcourir

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

Sortie :

Hello World!

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