ホームページ >バックエンド開発 >Golang >Go 言語のバイト型の基本を理解するのに役立つ記事

Go 言語のバイト型の基本を理解するのに役立つ記事

Go语言进阶学习
Go语言进阶学习転載
2023-07-20 14:40:241644ブラウズ
#今回も Go の基本的なバイト型を学習していきます。

上記の文字列の復習

上記の記事では、文字列型について学びました。

Go 言語では、文字列型は 基本型 であり、スタックに格納され、下記の構造となります。

Go 言語のバイト型の基本を理解するのに役立つ記事

ご覧のとおり、Go では、文字列は実際には連続した メモリ アドレスを指します と長さを記録し、一気に読み取ります。

では、上の図に示すように、メモリに保存されている 文字 の名前は何でしょうか。 ? ? ?


バイトとルーンのタイプ

文字列は 文字で構成されます。これは、文字列 を結合して文字列にしたものでもあり、各文字は バイトと呼ばれます。 バイトは 1 バイト サイズ

を占有します。文字と句読点のみを保存できます。オンでは、中国語は保存できません。 もちろん、中国語を保存したらどうすればよいですか??? Go には rune

があります、および byte は類似しており、本質は byte と同じです。 runeを除く 1 つは 4 バイトを占有します。 rune

utf-8 を使用しますエンコードにより中国語やさまざまな言語を保存できます。

したがって、中国語を処理する場合は、rune タイプを使用するようにしてください。


(バイト) バイト型変数を定義します

文字で囲みます一重引用符 #' で囲みます。

#コード

package main

import "fmt"

func main() {
    var a byte = 'a'
    fmt.Println(a)
}

子供たち、たくさん質問はありますか? なぜ 97# なのでしょうか? ## ##################理由#########

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

package main

import "fmt"

func main() {
    var a rune = 'a'
    fmt.Println(a)
}

结果:

Go 言語のバイト型の基本を理解するのに役立つ記事

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

byte不能存中文

Go 言語のバイト型の基本を理解するのに役立つ記事

rune可以存中文

Go 言語のバイト型の基本を理解するのに役立つ記事

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

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

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

Go 言語のバイト型の基本を理解するのに役立つ記事

遍历字符串

方式一

package main

import "fmt"

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

Go 言語のバイト型の基本を理解するのに役立つ記事

方式二

package main

import "fmt"

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

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

以上がGo 言語のバイト型の基本を理解するのに役立つ記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はGo语言进阶学习で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。