string,byte,rune

小怪兽狂殴奥特曼 · · 380 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

byte本指是int8,操作的基本单位是字节,适合只适合表达ascii字符
rune本质是int32,操作的基本单位是字符,可以处理所有的字符,用来表示utf8,unicode等编码
string本指是[]byte

byte/rune转string
var b []byte="abc"
var r []rune="cdr"

var s1 string=string(b)
var s2 string =string(r)

string转byte/rune
var s string = "abc"

r := []rune(s)
b:=[]byte(s)

len()函数

var b []byte="abc"
var r []rune="cdr你好"

s := string(r)

fmt.Println(len(r))
fmt.Println(len(b))
//在unicode中,一个中文占两个字节,utf-8中一个中文占三个字节,golang默认的编码是utf-8编码,因此默认一个中文占三个字节,但是golang中的字符串底层实际上是一个byte数组。因此输出9
fmt.Println(len(s))

string的遍历
var r []rune="cdr你好"
s := string(r)

// 输出不正常
for i:=0;i<len(s);i++ {
fmt.Println(string(s[i]))
}

//按字符输出 "cdr你好"
for _,v:= range s {
fmt.Println(string(v))
}


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:小怪兽狂殴奥特曼

查看原文:string,byte,rune

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

380 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传