Maison > Article > développement back-end > Comment obtenir la longueur des caractères d'une rune en langage Go
La colonne tutorielle suivante de golang vous présentera comment obtenir la longueur des caractères par rune dans le langage go. J'espère qu'elle sera utile aux amis qui en ont besoin !
rune est un type de données spécial dans le langage Go. C'est un alias de int32 et est équivalent à int32 dans presque tous les aspects. Il est utilisé pour distinguer les valeurs de caractères et les valeurs entières. suit :
// rune is an alias for int32 and is equivalent to int32 in all ways. It is // used, by convention, to distinguish character values from integer values. //int32的别名,几乎在所有方面等同于int32 //它用来区分字符值和整数值 type rune = int32
Regardons cela à travers un exemple :
package mainimport "fmt"func main() { var str = "hello 你好啊" fmt.Println("len(str):", len(str))}
Devinons le résultat, bonjour c'est 5 caractères + 1 espace + 3 caractères chinois, ce qui devrait faire 9 au total, et la longueur est 9, mais nous l'exécutons,
et le résultat imprimé est 15. Pourquoi est-ce ?
La couche inférieure de la chaîne dans Golang est implémentée via un tableau d'octets. Les caractères chinois occupent 2 octets sous Unicode et 3 octets sous l'encodage utf-8, et l'encodage par défaut de Golang est exactement utf-8.
La longueur calculée est donc égale à 5+1+3*3=15
Si nous devons calculer la longueur de la chaîne au lieu du nombre d'octets sous-jacents, nous pouvons utiliser The méthode suivante :
package main import ( "fmt" "unicode/utf8" ) func main() { var str = "hello 你好啊" //golang中string底层是通过byte数组实现的,座椅直接求len 实际是在按字节长度计算 所以一个汉字占3个字节算了3个长度 fmt.Println("len(str):", len(str)) // 15 //以下两种都可以得到str的字符串长度 //1、golang中的unicode/utf8包提供了用utf-8获取长度的方法 fmt.Println("RuneCountInString:", utf8.RuneCountInString(str)) //2、通过rune类型处理unicode字符 fmt.Println("rune:", len([]rune(str))) }
Le résultat en cours d'exécution est le suivant :
Il y en a un autre au-dessus de la définition de la rune, byte = uint8
// byte is an alias for uint8 and is equivalent to uint8 in all ways. It is // used, by convention, to distinguish byte values from 8-bit unsigned // integer values. type byte = uint8
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!