Heim  >  Artikel  >  Backend-Entwicklung  >  Ein Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen

Ein Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen

Go语言进阶学习
Go语言进阶学习nach vorne
2023-07-20 14:40:241587Durchsuche
Dieses Mal lernen wir weiterhin die grundlegenden Bytetypen von Go.

Überprüfung der Saiten oben

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.

Ein Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen

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? ? ?


Byte- und Runentypen

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-8byte 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类型。


定义个(字节)byte类型变量

字符用单引号'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

Zahl.

Code

package main

import "fmt"

func main() {
    var a byte = &#39;a&#39;
    fmt.Println(a)
}
Ein Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen

Kinder, habt ihr viele Fragen??? Warum ist 97

🎜🎜🎜🎜Grund🎜🎜🎜

byte代表的是一个ASCII码的一个字符,同理,rune可以理解为是byte的一个超集,向下兼容byte

package main

import "fmt"

func main() {
    var a rune = &#39;a&#39;
    fmt.Println(a)
}

结果:

Ein Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen

但是rune里面可以写中文,byte不行。

byte不能存中文

Ein Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen

rune可以存中文

Ein Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen

发现了吗,打印的竟然是一个数字?这是为啥???

就拿字母a来说,其实打印的是ASCII对应的数字,打印的是他的十进制。

同理,字符也是,这里就不做例子了,因为utf-8表太大了。

Ein Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen

遍历字符串

方式一

package main

import "fmt"

func main() {
    s := "我是法外狂徒,张三,hahaha"
    for _, r := range s {
        fmt.Printf("%c \n",r)
}
}

Ein Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen

方式二

package main

import "fmt"

func main() {
    s := "我是法外狂徒,张三,hahaha"
    for i := 0; i < len(s); i++ {
        //中文会乱码,不推荐
        fmt.Printf("%c \n",s[i])
}
}

Ein Artikel, der Ihnen hilft, die Grundlagen der Bytetypen der Go-Sprache zu verstehen

修改字符串

同理,字符串相当于是字节列表组成的,是不能直接修改的,想要直接修改需要打散成字节列表才行。

package main

import "fmt"

func main() {
    //只有英文的情况下
    s1 := "hello world"
    var s1_byte_list = []byte(s1) //打散成字符列表
    s1_byte_list[6] = &#39;F&#39;         //修改下表为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] = &#39;雪&#39;         //修改下表为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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:Go语言进阶学习. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen