Maison >développement back-end >Golang >Comment écrire une fonction en Golang pour inverser une chaîne Unicode en utilisant une seule affectation/opération ?
L'éditeur PHP Zimo vous expliquera comment écrire une fonction dans Golang pour inverser une chaîne Unicode en utilisant une seule affectation/opération. Inverser une chaîne est une opération courante, mais dans Golang, nous pouvons obtenir l'effet en utilisant une seule affectation/opération de manière intelligente. Cette méthode est basée sur le fait que les chaînes sont immuables. Nous pouvons convertir la chaîne en tranche de rune puis inverser la chaîne en échangeant les éléments de la tranche. Examinons ensuite la méthode de mise en œuvre spécifique !
Je dois écrire ma propre reverse.Reverse
simulation pour les chaînes Unicode. Voici mon 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() }
Mais cela se traduit par 2 missions/opérations :
cpu: 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz BenchmarkReverse BenchmarkReverse-16 297900 7014 ns/op 1792 B/op 2 allocs/op
Comment faire 1 seule allocation/opération ? Je sais, c'est possible
Et je ne comprends pas non plus pourquoi result.Grow(len(runes))
使 5 个分配/操作和 result.Grow(len(input))
- 1 mission/opération
Créer des chaînes.Builder avec la capacité requise. Écrit les runes de la chaîne source vers le constructeur dans l'ordre inverse.
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
Cette réponse reproduit la fonctionnalité de la question. Je ne pense pas qu'il soit logique que les résultats soient affichés aux humains sous forme de glyphes. Par exemple, les caractères combinés ne se combinent pas comme les chaînes brutes.
Voici un exemple artificiel qui illustre l'utilisation de la fonction inverse : certains ensembles de valeurs d'une application ont tendance à avoir des clés de chaîne avec des préfixes communs et des suffixes peu communs. Les applications peuvent améliorer la répartition de l'espace des chaînes en inversant les clés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!