ホームページ >バックエンド開発 >Golang >AST から Go 文字列リテラルの引用符を外すにはどうすればよいですか?

AST から Go 文字列リテラルの引用符を外すにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-05 13:07:10306ブラウズ

How to Unquote Go String Literals from an AST?

構文ツリーから Go 文字列リテラルの引用符を外す

Go 構文ツリーをトラバースするとき、文字列の実際の値を抽出する必要がある場合があります。 Kind が token.STRING に設定された ast.BasicLit ノードとして表されるリテラル。ただし、このノードには最初、文字列のリテラル値ではなく、文字列を表す Go コードが含まれています。

解決策:

Go 文字列リテラル コードを実際の値に変換するには、次のようにします。 strconv.Unquote() 関数を使用します。この関数は、引用符で囲まれた文字列から引用符を削除し、生の文字列値を取得できるようにします。

注:

strconv.Unquote() は、で囲まれた文字列の引用符を解除することしかできません。引用符 (一重または二重)。文字列リテラルが引用符で囲まれていない場合は、関数を使用する前に手動で追加する必要があります。

例:

import (
    "fmt"
    "strconv"
)

func main() {
    // Given a quoted string
    quotedString := "`Hi`"

    // Unquote it
    unquotedString, err := strconv.Unquote(quotedString)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println(unquotedString) // Prints "Hi"
    }

    // Given an unquoted string
    unquotedString2 := "Hi"

    // Add quotes and unquote it
    quotedString2 := strconv.Quote(unquotedString2)
    unquotedString2, err = strconv.Unquote(quotedString2)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println(unquotedString2) // Also prints "Hi"
    }
}

以上がAST から Go 文字列リテラルの引用符を外すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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