脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Golang - 你知道Go语言的Rune吗?

你知道Go语言的Rune吗?

2022-10-24 20:31程序员升级打怪之旅 Golang

由于rune可表示的范围更大,所以能处理一切字符,当然也包括中文字符。在平时计算中文字符,可用rune。当我们数据中有中文时,一定要注意rune的处理

rune它是int32的别名(-2147483648~2147483647),相比于byte(-128~127),可表示的字符更多。

由于rune可表示的范围更大,所以能处理一切字符,当然也包括中文字符。在平时计算中文字符,可用rune。

当我们数据中有中文时,一定要注意rune的处理。

len()详解

len()获得的是 byte 字节的数量,一个中文占用3个字节

s := "Hello王" sHello := "Hello" sWang := "王" //len()获得的是 byte 字节的数量
fmt.Println(len(s)) fmt.Println(len(sHello)) fmt.Println(len(sWang))


输出结果是:8 5 3

循环输出字符串

s := "Hello王" for i := 0; i < len(s); i++ { fmt.Printf("%c\n", s[i]) }


输出结果:

你知道Go语言的Rune吗?

我们发现英文可以正常输出,但是中文通过这种方式输出会乱码

循环输出中文字符串

我们可以通过for range循环,从字符串中拿出具体的字符

s := "Hello王" for _, c := range s { fmt.Printf("%c\n", c) //%c 字符 }


输出结果:

你知道Go语言的Rune吗?

字符串的修改

字符串修改是不能直接修改的,需要转成rune切片后再修改

s2 := "小白兔"
s3 := []rune(s2)        //把字符串强制转成rune切片
s3[0] = '大'             //注意 这里需要使用单引号的字符,而不是双引号的字符串
fmt.Println(string(s3)) //把rune类型的s3强转成字符串


输出结果:大白兔

字符和字符串的区别

c1 := "红" c2 := '红' fmt.Printf("c1的类型:%T c2的类型:%T \n", c1, c2) c3 := "H" c4 := 'H' fmt.Printf("c3的类型:%T c4的类型:%T \n", c3, c4)


输出结果:

c1的类型:string c2的类型:int32 
c3的类型:string c4的类型:int32


总结:我们发现只要是双引号包裹的类型就是string,只要是单引号包裹的类型就是int32,也就是rune。和中英文无关。

知识点:rune的别名是int32

类型转换

n1 := 10 var f float64
f = float64(n1) fmt.Printf("f的类型是:%T f的值是:%v\n", f,f)


输出结果:

f的类型是:float64 f的值是:10


总结

字符串的修改要转成rune切片,而不能像PHP一样直接修改。

本文转载自微信公众号「 程序员升级打怪之旅」,作者「王中阳Go」,可以通过以下二维码关注。转载本文请联系程序员升级打怪之旅公众号。

你知道Go语言的Rune吗?

原文地址:https://mp.weixin.qq.com/s/ETHu4KWgznYEU4UsyP3mtQ

延伸 · 阅读

精彩推荐
  • GolangGo语言图片处理和生成缩略图的方法

    Go语言图片处理和生成缩略图的方法

    这篇文章主要介绍了Go语言图片处理和生成缩略图的方法,涉及Go语言针对图片操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下 ...

    不吃皮蛋8822020-04-15
  • Golang为什么GO不支持循环引用

    为什么GO不支持循环引用

    这篇文章主要介绍的是为什么GO不支持循环引用,学习 Go 语言的开发者越来越多了,很多小伙伴在使用时,就会遇到种种不理解的问题,其中一点就是包的...

    煎鱼10412021-11-25
  • GolangGo语言中你所不知道的位操作用法

    Go语言中你所不知道的位操作用法

    位运算可能在平常的编程中使用的并不多,但涉及到底层优化,一些算法及源码可能会经常遇见。下面这篇文章主要给大家介绍了关于Go语言中你所不知道...

    python修行路2102020-05-12
  • Golang解决golang json解析出现值为空的问题

    解决golang json解析出现值为空的问题

    这篇文章主要介绍了解决golang json解析出现值为空的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    一只APE的进化史13092021-03-22
  • Golangaxios gin的GET和POST请求实现示例

    axios gin的GET和POST请求实现示例

    这篇文章主要为大家介绍了axios gin的GET和POST请求实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪...

    Jeff的技术栈7162022-09-20
  • GolangGo语言空白表示符_的实例用法

    Go语言空白表示符_的实例用法

    在本篇内容里小编给大家整理的是一篇关于Go语言空白表示符_的实例用法,有兴趣的朋友们可以学习参考下。...

    PrnyNing10012021-08-13
  • Golang详解Golang开启http服务的三种方式

    详解Golang开启http服务的三种方式

    这篇文章主要介绍了详解Golang开启http服务的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们...

    L千年老妖35472020-07-21
  • GolangGolang Map实现赋值和扩容的示例代码

    Golang Map实现赋值和扩容的示例代码

    这篇文章主要介绍了Golang Map实现赋值和扩容的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    搬砖程序员带你飞3572020-06-09