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 중국어 웹사이트의 기타 관련 기사를 참조하세요!