golang 中的字符类型

golang 中的字符类型,第1张

概述golang 把字符类型单独分离出来, 并且使用了不同的语法: var char = '这' 而用 fmt.Printf("%T", char) 查看其类型, 竟然是 int32 这让人奇怪, 通常字符组成了字符串, 字符串如果只有一个字符长度的话, 应当就是字符. 但 golang 的做法改变了这种通常的观点: 字符是数字类型, 如果要合并一个字符到字符串中, 该怎么办呢? str := str

golang 把字符类型单独分离出来,并且使用了不同的语法:

var char = '这'

而用 fmt.Printf("%T",char) 查看其类型,竟然是 int32 这让人奇怪,通常字符组成了字符串,字符串如果只有一个字符长度的话,应当就是字符. 但 golang 的做法改变了这种通常的观点:

字符是数字类型,如果要合并一个字符到字符串中,该怎么办呢?

str := string(char)

golang 预定义了 rune,byte 两种和字符有关的类型,但在显示的时候,却改了名字:

var x bytefmt.Printf("x is %T",x) // x is int8var y runefmt.Printf("y is %T",y) // y is int32

这似乎没有必要定义这两种类型,因为 golang 自己的内置函数根本就忽略了它.

另外 golang 和字符串有关的类型也比较混乱,有 string,[]byte,[]rune. 和 string 有关的 strings 模块的输入数据类型大部分是 []string. 而由此引发的数据流就更加混乱,读出的字符串有各种格式.

不过 golang 提供了内置函数对这些数据类型进行相互转换:

var str = "这里输入代码"var chars = []rune(str)var bytes = []byte(str) // 这里就乱了,因为 unicode 字符被 asc 编码了

我想,golang 搞了这么多类型来处理字符串是基于效率的考虑:

字符串是不可变(只读)类型 []byte,[]rune 是切片可变(引用)类型. []rune 是为了处理各国语言字符准备的类型 传递大文本时,用切片将字符串分割成一个一个小部分进行处理 二进制文件,图片文件,压缩文件都是按照 byte 逐个字符处理的.

总之,学习 golang 的字符串,就要明白,传递一个大字符串,最好用引用类型,而处理一个小字符串,使用切片就会变得繁琐.

如何在编码效率和执行效率之间取得平衡,就由程序员自己选择吧.

总结

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

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

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

原文地址: http://outofmemory.cn/langs/1282806.html

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

发表评论

登录后才能评论

评论列表(0条)

保存