Heim >Backend-Entwicklung >Golang >Wie extrahiere ich den String-Wert aus einem Go-String-Literal in einem AST-Knoten?
String-Wert aus Go-String-Literal-Code abrufen
In einem Go-Syntaxbaum-Manipulationsszenario müssen Sie möglicherweise den Wert eines Strings extrahieren Literal von einem ast.BasicLit-Knoten. Während dieser Knoten den String-Literaltyp angibt, wird sein Wert als Go-Code anstelle des tatsächlichen String-Werts dargestellt. In diesem Artikel geht es um die Lösung dieser Herausforderung.
Lösung: strconv.Unquote()
Die Funktion strconv.Unquote() ist der Schlüssel um diesem Bedarf gerecht zu werden. Es ermöglicht die Konvertierung eines als Go-Code dargestellten Zeichenfolgenliterals zurück in seinen Wert ohne Anführungszeichen. Es ist jedoch wichtig zu beachten, dass strconv.Unquote() nur Zeichenfolgen, die in Anführungszeichen (") eingeschlossen sind, in Anführungszeichen setzt. Wenn also das Zeichenfolgenliteral in Ihrem ast.BasicLit-Knoten Anführungszeichen fehlen, müssen Sie diese manuell hinzufügen bevor Sie strconv.Unquote() verwenden.
Beispiel Verwendung:
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 }
Wichtige Hinweise:
Das obige ist der detaillierte Inhalt vonWie extrahiere ich den String-Wert aus einem Go-String-Literal in einem AST-Knoten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!