> 백엔드 개발 > Golang > AST 노드의 Go 문자열 리터럴에서 문자열 값을 추출하는 방법은 무엇입니까?

AST 노드의 Go 문자열 리터럴에서 문자열 값을 추출하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-07 16:51:11
원래의
751명이 탐색했습니다.

How to Extract the String Value from a Go String Literal in an AST Node?

Go 문자열 리터럴 코드에서 문자열 값 검색

Go 구문 트리 조작 시나리오에서는 문자열 값을 추출해야 할 수도 있습니다. ast.BasicLit 노드의 리터럴입니다. 이 노드는 문자열 리터럴 유형을 나타내지만 해당 값은 실제 문자열 값이 아닌 Go 코드로 표시됩니다. 이 문서에서는 이 문제에 대한 솔루션을 설명합니다.

해결책: strconv.Unquote()

strconv.Unquote() 함수가 핵심입니다. 이러한 요구를 해결하기 위해. Go 코드로 표현된 문자열 리터럴을 따옴표가 없는 값으로 다시 변환할 수 있습니다. 그러나 strconv.Unquote()는 따옴표(")로 묶인 문자열만 인용 해제한다는 점에 유의하는 것이 중요합니다. 따라서 ast.BasicLit 노드의 문자열 리터럴에 따옴표가 없으면 수동으로 추가해야 합니다. 사용하기 전에 strconv.Unquote().

사용 예:

import (
    "fmt"
    "strconv"
)

func main() {
    // String literal without quotation marks (will fail)
    str1 := "Hello"

    // String literal with quotation marks (valid)
    str2 := `"Hello world"`

    // Manually adding quotation marks to the first string
    str1 = strconv.Quote(str1)

    // Unquoting the string literals
    unqStr1, _ := strconv.Unquote(str1)
    unqStr2, _ := strconv.Unquote(str2)

    fmt.Println(unqStr1) // Output: Hello
    fmt.Println(unqStr2) // Output: Hello world
}
로그인 후 복사

중요 참고:

  • strconv.Unquote()는 따옴표 안의 문자열만 인용 해제합니다.
  • 문자열 리터럴에 특수 문자(예: 줄 바꿈)가 포함된 경우 ), strconv.Quote()를 먼저 사용해야 합니다. strconv.Unquote()를 사용하여 올바르게 처리하세요.
  • 간결함을 위해 예시의 _ 반환 값은 무시되며 실제 사용 사례에서는 적절하게 처리됩니다.

위 내용은 AST 노드의 Go 문자열 리터럴에서 문자열 값을 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿