>백엔드 개발 >Golang >Go 언어 바이트 유형의 기본을 이해하는 데 도움이 되는 기사

Go 언어 바이트 유형의 기본을 이해하는 데 도움이 되는 기사

Go语言进阶学习
Go语言进阶学习앞으로
2023-07-20 14:40:241644검색
이번에도 Go의 기본 바이트 유형을 계속해서 배워보겠습니다.

위 문자열 리뷰

위 글에서는 문자열 유형에 대해 알아보았습니다.

Go 언어에서는 문자열 타입이 기본 타입으로 스택에 저장되며 그 구조는 다음과 같습니다.

Go 언어 바이트 유형의 기본을 이해하는 데 도움이 되는 기사

Go에서 문자열은 실제로 연속적인 메모리 주소를 가리키며, 길이가 기록되고, 읽은 내용이 한 번에 읽혀지는 것을 볼 수 있습니다.

그렇다면 위 사진처럼 메모리에 저장된 각 문자의 이름은 무엇일까요? ? ?


바이트 및 룬 유형

문자열은 문자가 서로 접합된 이며, 반대로 문자열이 접합된 문자이기도 합니다. , 는 바이트라고 합니다.

바이트는 1바이트 크기를 차지합니다. 문자, 구두점 등만 저장할 수 있으며 한자는 저장할 수 없습니다.

물론 중국어를 저장하면 어떻게 해야 하나요??? ;border- Go 스타일: 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;">runerune,和byte类似,本质和byte一样,只不过rune一个占用4个字节。

rune使用utf-8byte는 비슷하며 그 본질은

🎜바이트🎜🎜는 🎜🎜🎜🎜하나는 🎜🎜🎜4바이트를 차지합니다. 🎜🎜🎜

🎜🎜🎜use🎜🎜utf-8🎜🎜encoding, 중국어 및 다양한 언어를 저장할 수 있습니다. 🎜🎜

그래서 룬 코드 ><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类型变量

字符用单引号'종류.

(바이트) 바이트 유형 변수 정의

문자
에는 작은따옴표를 사용하세요.'

숫자로 래핑됩니다. Go 언어 바이트 유형의 기본을 이해하는 데 도움이 되는 기사

Code

package main

import "fmt"

func main() {
    var a byte = &#39;a&#39;
    fmt.Println(a)
}
🎜🎜🎜얘들아 궁금한거 많아??? 왜 97🎜🎜🎜🎜🎜🎜🎜🎜reason🎜🎜🎜

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

package main

import "fmt"

func main() {
    var a rune = &#39;a&#39;
    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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 Go语言进阶学习에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제