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 サイトの他の関連記事を参照してください。