Heim > Artikel > Backend-Entwicklung > Wie schreibe ich eine Funktion in Golang, um eine Unicode-Zeichenfolge mit nur einer Zuweisung/Operation umzukehren?
Der PHP-Editor Zimo führt Sie durch das Schreiben einer Funktion in Golang, um eine Unicode-Zeichenfolge mit nur einer Zuweisung/Operation umzukehren. Das Umkehren einer Zeichenfolge ist eine übliche Operation, aber in Golang können wir den Effekt auf clevere Weise mit nur einer Zuweisung/Operation erzielen. Diese Methode basiert auf der Tatsache, dass Strings unveränderlich sind. Wir können den String in ein Runen-Slice umwandeln und dann den String umkehren, indem wir die Elemente im Slice austauschen. Schauen wir uns als Nächstes die spezifische Implementierungsmethode an!
Ich muss meine eigene reverse.Reverse
Simulation für Unicode-Strings schreiben. Das ist mein Code:
func Reverse(input string) string { runes := []rune(input) var result strings.Builder result.Grow(len(runes)) for i := len(runes) - 1; i >= 0; i-- { result.WriteRune(runes[i]) } return result.String() }
Aber es ergeben sich 2 Aufgaben/Operationen:
cpu: 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz BenchmarkReverse BenchmarkReverse-16 297900 7014 ns/op 1792 B/op 2 allocs/op
Wie führt man nur eine Zuordnung/Operation durch? Ich weiß, es ist möglich
Und ich verstehe auch nicht warum result.Grow(len(runes))
使 5 个分配/操作和 result.Grow(len(input))
- 1 Zuweisung/Vorgang
Erstellen Sie strings.Builder mit der erforderlichen Kapazität. Schreibt die Runen aus der Quellzeichenfolge in umgekehrter Reihenfolge in den Builder.
func Reverse(str string) string { var result strings.Builder result.Grow(len(str)) for len(str) > 0 { r, size := utf8.DecodeLastRuneInString(str) result.WriteRune(r) str = str[:len(str)-size] } return result.String() }
https://www.php.cn/link/6acfe16b984d473723a8495a84e548b7
Diese Antwort reproduziert die Funktionalität in der Frage. Ich halte es nicht für sinnvoll, dass die Ergebnisse den Menschen als Glyphen angezeigt werden. Beispielsweise werden kombinierte Zeichen nicht wie reine Zeichenfolgen kombiniert.
Hier ist ein erfundenes Beispiel, das die Verwendung der Umkehrfunktion veranschaulicht: Bestimmte Wertesätze einer Anwendung neigen dazu, Zeichenfolgenschlüssel mit gemeinsamen Präfixen und ungewöhnlichen Suffixen zu haben. Anwendungen können die Verteilung des Zeichenfolgenraums durch Umkehren der Schlüssel verbessern.
Das obige ist der detaillierte Inhalt vonWie schreibe ich eine Funktion in Golang, um eine Unicode-Zeichenfolge mit nur einer Zuweisung/Operation umzukehren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!