golang字符、字符串的那些事儿

golang字符、字符串的那些事儿,第1张

概述通过下边的代码可以看出,r实质是int32,占用4个字节,值是25105;s是string,占用3个字节,值是e68891. 推断r应该是unicode编码的,s是utf8编码的. package main import( "fmt") func main() { r := '我' fmt.Printf("%t\n", r

通过下边的代码可以看出,r实质是int32,占用4个字节,值是25105;s是string,占用3个字节,值是e68891.

推断r应该是unicode编码的,s是utf8编码的.

package main           import(    "fmt")           func main() {    r := '我'     fmt.Printf("%t\n",r)    // %!t(int32=25105)               s := "我"    fmt.Printf("%t,%d %x\n",s,len(s),s)    // %!t(string=我) 3 e68891               fmt.Printf("%b\n",int32(r))    // 110001000010001    // 0000 0000 0000 0000 0110 0010 0001 0001                   for _,b := range []byte(s) {        fmt.Printf("%b\n",b)    }    // 11100110    // 10001000    // 10010001}

现在打印出二进制的值进行比较,整理如下:

0000 0000 0000 0000 0110 0010 0001 0001 // r          1110 0110 1000 1000 1001 0001 // s

然后转换s转换为r,也就是utf8转换为unicode

          1110 0110 1000 1000 1001 0001 // s               0110   00 1000   01 0001 // s utf8 -> unicode          0000 0000 0110 0010 0001 0001 // s utf8 -> unicode0000 0000 0000 0000 0110 0010 0001 0001 // r

转换成功 得出结论 r是unicode编码 s是utf8 编码

golang和java一样 字符是unicode编码 字符串是utf8编码

底层这些东东一定要弄明白,不然会经常害人的.

总结

以上是内存溢出为你收集整理的golang字符、字符串的那些事儿全部内容,希望文章能够帮你解决golang字符、字符串的那些事儿所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1290836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存