Im obigen Artikel haben wir etwas über den Saitentyp erfahren.
In der Go-Sprache ist der Zeichenfolgentyp Basistyp, der auf dem Stapel gespeichert wird und die folgende Struktur hat.
Sie können sehen, dass in Go die Zeichenfolge tatsächlich auf eine kontinuierliche Speicheradresse zeigt und die Länge aufgezeichnet und der Lesevorgang auf einmal gelesen wird.
Wie lauten also, wie im Bild oben gezeigt, die Namen der einzelnen Buchstaben, die im Speicher gespeichert sind? ? ?
Strings sind zusammengefügte Zeichen , und umgekehrt sind sie auch zu Strings zusammengefügte Zeichen und Zeichen einzeln. , ist namens Byte.
Bytes belegen 1 Byte Es können nur Buchstaben, Satzzeichen und dergleichen gespeichert werden, jedoch keine chinesischen Schriftzeichen.
Natürlich, was soll ich tun, wenn ich Chinesisch speichere??? ;Rahmen- im Go-Stil: einfarbig;Rahmenfarbe: RGB(231, 234, 237);Hintergrundfarbe: RGB(243, 244, 244);Rahmenradius: 3px;Padding-rechts: 2px;Padding-links : 2px;font- size: 0.9em;">rune und rune
,和byte
类似,本质和byte
一样,只不过rune
一个占用4个字节。
rune
使用utf-8
byte
ist ähnlich und sein Wesen ist
byte
🎜🎜 ist dasselbe, außer 🎜🎜rune
🎜🎜one belegt 🎜🎜🎜4 Bytes. 🎜🎜🎜rune🎜🎜use🎜🎜<code style="font-family: var( --monospace);vertical-align: initial;border-width: 1px;border-style: solid;border-color: rgb(231, 234, 237);background-color: rgb(243, 244, 244);border -radius: 3px;padding-right: 2px;padding-left: 2px;font-size: 0.9em;">utf-8🎜🎜Codierung, kann Chinesisch und verschiedene Sprachen speichern. 🎜🎜
Versuchen Sie also, rune code ><code style="font-family: var(--monospace);vertical-align: initial;border-width: 1px;border-style: solid;border-color: rgb(231, 234, 237);background-color: rgb(243, 244, 244);border-radius: 3px;padding-right: 2px;padding-left: 2px;font-size: 0.9em;">rune
类型。
字符用单引号'
Typ. ?? : 1rem;Rand unten: 1rem;Schriftstärke: fett;Zeilenhöhe: 1,43;Cursor: Text;Leerraum: Vorumbruch;Schriftfamilie: „Open Sans“, „Clear Sans“, „Helvetica Neue ", Helvetica, Arial, sans-serif;text-align: start;">Definieren Sie eine (Byte-)Byte-Typvariable
Verwenden Sie einfache Anführungszeichen für
Zeichen'
Umschlossen mit
package main import "fmt" func main() { var a byte = 'a' fmt.Println(a) }
Kinder, habt ihr viele Fragen??? Warum ist 97
byte
代表的是一个ASCII
码的一个字符,同理,rune
可以理解为是byte
的一个超集,向下兼容byte
。
package main import "fmt" func main() { var a rune = 'a' fmt.Println(a) }
结果:
但是rune
里面可以写中文,byte
不行。
发现了吗,打印的竟然是一个数字?这是为啥???
就拿字母a
来说,其实打印的是ASCII
对应的数字,打印的是他的十进制。
同理,字符张
也是,这里就不做例子了,因为utf-8
表太大了。
package main import "fmt" func main() { s := "我是法外狂徒,张三,hahaha" for _, r := range s { fmt.Printf("%c \n",r) } }
package main import "fmt" func main() { s := "我是法外狂徒,张三,hahaha" for i := 0; i < len(s); i++ { //中文会乱码,不推荐 fmt.Printf("%c \n",s[i]) } }
同理,字符串相当于是字节列表组成的,是不能直接修改的,想要直接修改需要打散成字节列表才行。
package main import "fmt" func main() { //只有英文的情况下 s1 := "hello world" var s1_byte_list = []byte(s1) //打散成字符列表 s1_byte_list[6] = 'F' //修改下表为6的字符为F s1 = string(s1_byte_list) //打散的字符列表在组装成字符串 fmt.Println(s1) //输出 hello 6orld //带有中文的情况 s2 := "天空好像下雨,我好像住你隔壁vay" var s2_rune_list = []rune(s2) //打散成utf-8字符列表 s2_rune_list[5] = '雪' //修改下表为5的字符为雪 s2 = string(s2_rune_list) //打散的utf8字符转字符串 fmt.Println(s2) //输出 天空好像下雪,我好像住你隔壁 }
Das obige ist der detaillierte Inhalt vonEin Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!