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 }
重要な注意事項:
以上がAST ノードの Go 文字列リテラルから文字列値を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。