ホームページ >バックエンド開発 >Golang >Go AST の `ast.BasicLit` ノードからリテラル文字列値を抽出する方法は?

Go AST の `ast.BasicLit` ノードからリテラル文字列値を抽出する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-26 11:45:10948ブラウズ

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

Go AST から文字列リテラル値を取得する方法

Go 構文ツリーを走査して文字列を受け取る特定の関数の呼び出しを識別する場合リテラル引数を使用すると、Kind == token.STRING の ast.BasicLit ノードが見つかる可能性があります。ただし、このノードの値フィールドには、それが表す実際の文字列値ではなく Go 構文が含まれています。

文字列のリテラル値を取得するには、strconv.Unquote() 関数を使用します。ただし、この関数は引用符で囲まれた文字列の引用符を解除するだけであることに注意してください。 ast.BasicLit 内の文字列が引用符で囲まれていない場合は、適切な引用符文字を手動で先頭に追加する必要があります。

例:

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

出力:

Hello World!

以上がGo AST の `ast.BasicLit` ノードからリテラル文字列値を抽出する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。