Heim > Backend-Entwicklung > Golang > So ermitteln Sie die Zeichenlänge von Rune in der Go-Sprache

So ermitteln Sie die Zeichenlänge von Rune in der Go-Sprache

藏色散人
Freigeben: 2021-06-09 15:05:13
nach vorne
2784 Leute haben es durchsucht

Die folgende Tutorial-Kolumne von golang zeigt Ihnen, wie Sie die Zeichenlänge von Rune in der Go-Sprache ermitteln. Ich hoffe, dass sie Freunden in Not hilfreich sein wird!

So ermitteln Sie die Zeichenlänge von Rune in der Go-Sprache

rune ist ein spezieller Datentyp in der Go-Sprache, der in fast allen Aspekten mit int32 übereinstimmt. Die offizielle Erklärung lautet wie folgt:

// 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
Nach dem Login kopieren

Lassen Sie uns ein Beispiel zur Veranschaulichung verwenden. Werfen Sie einen Blick darauf:

package mainimport "fmt"func main() {
    var str = "hello 你好啊"
    fmt.Println("len(str):", len(str))}
Nach dem Login kopieren

Lassen Sie uns das Ergebnis erraten, hallo sind 5 Zeichen + 1 Leerzeichen + 3 chinesische Zeichen, die 9 sein sollten, und die Länge ist 9, aber wenn wir es ausführen,

So ermitteln Sie die Zeichenlänge von Rune in der Go-Sprache

Das Ergebnis wird als 15 gedruckt. Warum ist das so?

Die unterste String-Ebene in Golang wird durch ein Byte-Array implementiert. Chinesische Zeichen belegen unter Unicode 2 Bytes und unter UTF-8-Kodierung 3 Bytes, und die Standardkodierung von Golang ist genau UTF-8.

Die berechnete Länge ist also gleich 5+1+3*3=15
Wenn wir die Länge der Zeichenfolge anstelle der Anzahl der zugrunde liegenden Bytes berechnen müssen, können wir die folgende Methode verwenden:

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)))
}
Nach dem Login kopieren

Run Die Ergebnisse sind wie folgt:
So ermitteln Sie die Zeichenlänge von Rune in der Go-Sprache

Über der Runendefinition gibt es noch eine weitere: 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
Nach dem Login kopieren
  • Byte entspricht int8 und wird üblicherweise zur Verarbeitung von ASCII-Zeichen verwendet.
  • rune entspricht int32 und wird häufig zur Verarbeitung verwendet Unicode- oder UTF-8-Zeichen

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie die Zeichenlänge von Rune in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage