構文ツリーから 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 サイトの他の関連記事を参照してください。