從語法樹取消引用Go 字串文字
遍歷Go 語法樹時,可能需要擷取字串的實際值文字表示為ast.BasicLit 節點,Kind 設定為token.STRING。但是,該節點最初包含表示字串的 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中文網其他相關文章!