위 글에서는 문자열 유형에 대해 알아보았습니다.
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;">rune 및 rune
,和byte
类似,本质和byte
一样,只不过rune
一个占用4个字节。
rune
使用utf-8
byte
는 비슷하며 그 본질은
바이트
🎜🎜는 🎜🎜룬
🎜🎜하나는 🎜🎜🎜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
类型。
字符用单引号'
종류.
문자
에는 작은따옴표를 사용하세요.'
숫자로 래핑됩니다.
Code
package main import "fmt" func main() { var a byte = 'a' fmt.Println(a) }🎜🎜🎜얘들아 궁금한거 많아??? 왜 97🎜🎜🎜🎜🎜🎜🎜🎜reason🎜🎜🎜
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) //输出 天空好像下雪,我好像住你隔壁 }
위 내용은 Go 언어 바이트 유형의 기본을 이해하는 데 도움이 되는 기사의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!