Rumah > pembangunan bahagian belakang > Golang > Artikel untuk membantu anda memahami asas jenis bait bahasa Go

Artikel untuk membantu anda memahami asas jenis bait bahasa Go

Lepaskan: 2023-07-20 14:52:31
ke hadapan
1675 orang telah melayarinya
Kali ini mari kita terus mempelajari jenis bait asas Go.

Semakan rentetan di atas

Dalam artikel di atas, kami belajar tentang jenis rentetan.

Dalam bahasa Go, jenis rentetan ialah jenis asas, yang disimpan pada tindanan dan strukturnya adalah seperti berikut.

Artikel untuk membantu anda memahami asas jenis bait bahasa Go

Anda boleh melihat bahawa dalam Go, rentetan sebenarnya menghala ke alamat ingatan berterusan, dan panjangnya direkodkan dan bacaan dibaca sekali gus.

Jadi, seperti yang ditunjukkan dalam gambar di atas, apakah nama setiap huruf yang tersimpan dalam ingatan? ? ?


jenis bait dan rune

Rentetan ialah aksara disambung bersama , dan sebaliknya, ia juga aksara satu rentetan , ialah dipanggil bait.

Bait menduduki 1 bait saiz Ia hanya boleh menyimpan huruf, tanda baca, dsb., tetapi tidak boleh menyimpan aksara Cina.

Sudah tentu, apakah yang perlu saya lakukan jika saya menyelamatkan bahasa Cina??? Ada rune,和byte类似,本质和byte一样,只不过rune一个占用4个字节。

rune使用utf-8rune, dan

bait🎜🎜 adalah serupa, dan intipatinya ialah 🎜🎜bait🎜🎜 adalah sama, kecuali 🎜🎜rune🎜🎜satu menduduki 🎜🎜🎜4 bait. 🎜🎜🎜

🎜rune🎜🎜use🎜🎜utf-8🎜🎜pengekodan, boleh menjimatkan bahasa Cina dan pelbagai bahasa. 🎜🎜

Jadi, cuba gunakan 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类型变量

字符用单引号'taip.

Tentukan pembolehubah jenis bait (bait)

Gunakan petikan tunggal untuk aksara
' Dibalut dengan nombor

. Artikel untuk membantu anda memahami asas jenis bait bahasa Go

Code

package main

import "fmt"

func main() {
    var a byte = &#39;a&#39;
    fmt.Println(a)
}
Salin selepas log masuk
🎜🎜🎜Anak-anak ada banyak soalan ke???

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

package main

import "fmt"

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

结果:

Artikel untuk membantu anda memahami asas jenis bait bahasa Go

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

byte不能存中文

Artikel untuk membantu anda memahami asas jenis bait bahasa Go

rune可以存中文

Artikel untuk membantu anda memahami asas jenis bait bahasa Go

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

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

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

Artikel untuk membantu anda memahami asas jenis bait bahasa Go

遍历字符串

方式一

package main

import "fmt"

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

Artikel untuk membantu anda memahami asas jenis bait bahasa Go

方式二

package main

import "fmt"

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

Artikel untuk membantu anda memahami asas jenis bait bahasa Go

修改字符串

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

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)               //输出 天空好像下雪,我好像住你隔壁
}
Salin selepas log masuk

Atas ialah kandungan terperinci Artikel untuk membantu anda memahami asas jenis bait bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:Go语言进阶学习
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan