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!