- 前言
- Go 与操作系统
- Go 内部机制
- Go 基本数据类型
- 4 组合类型的使用
- 5 数据结构
- 6 Go package 中不为人知的知识
- 7 反射和接口
- 8 Go UNIX 系统编程
- 08.1 关于 UNIX 进程
- 08.2 flag 包
- 8.2 flag 包
- 08.3 io.Reader 和 io.Writer 接口
- 08.4 bufio 包
- 08.5 读取文本文件
- 08.6 从文件中读取所需的数据量
- 08.7 为什么我们使用二进制格式
- 08.8 读取 CSV 文件
- 08.9 写入文件
- 08.10 从磁盘加载和保存数据
- 08.11 再看strings包
- 08.12 关于bytes包
- 08.13 文件权限
- 08.14 处理 Unix 信号
- 08.15 Unix 管道编程
- 08.16 遍历目录树
- 08.17 使用 ePBF
- 08.18 关于 syscall.PtraceRegs
- 08.19 跟踪系统调用
- 08.20 User ID 和 group ID
- 08.21 其他资源
- 08.22 练习
- 08.23 总结
- 9 并发 Goroutines、Channel 和 Pipeline
- 10 Go 并发-进阶讨论
- 11 代码测试、优化及分析
- 12 Go 网络编程基础
- 13 网络编程 - 构建服务器与客户端
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
04.5.1 rune 是什么?
rune是一个类型为int32
的值,因此他主要用来代表一个Unicode码点。Unicode码点是一个代表Unicode字符的数值。
NOTE:你可以认为字符串是一系列rune的集合
rune字面量实际上是一个用单引号括起来的字符,并且与与Unicode码点的概念相关联。
rune.go
将分两部分阐述rune的使用,第一部分是:
> package main
>
> import (
> "fmt"
> )
>
> func main() {
> const r1 = '€'
> fmt.Println("(int32) r1:", r1)
> fmt.Printf("(HEX) r1: %x\n", r1)
> fmt.Printf("(as a String) r1: %s\n", r1)
> fmt.Printf("(as a character) r1: %c\n", r1)
首先定义了一个rune字面量r1
,然后使用不同的方式去打印,分别是int32、十六进制、字符串、字符,最终你会发现使用字符格式打印出的与定义r1
的值相同。
第二部分:
> fmt.Println("A string is a collection of runes:", []byte("Mihalis"))
> aString := []byte("Mihalis")
> for x, y := range aString {
> fmt.Println(x, y)
> fmt.Printf("Char: %c\n", aString[x])
> }
> fmt.Printf("%s\n", aString)
> }
显而易见,字节切片实际上就是一系列runes的集合,并且如果你使用fmt.Println()
打印字节切片,结果很可能不会符合你的预期。fmt.Printf()
语句结合%c
可以将runes转换为字符输出;如果想要以字符串的形式输出字节数组,应使用fmt.Printf()
结合%s
。
执行runes.go得到下面的输出:
go run runes.go
(int32) r1: 8364 (HEX) r1: 20ac (as a String) r1: %!s(int32=8364) (as a character) r1: € A string is a collection of runes: [77 105 104 97 108 105 115] 0 77 Char: M 1 105 Char: i 2 104 Char: h 3 97 Char: a 4 108 Char: l 5 105 Char: i 6 115 Char: s Mihalis
最后,举一个产生illegal rune literal
错误的例子:在导包的时候使用单引号。
$ cat a.go
package main
import (
'fmt'
)
func main(){
}
$ go run a.go
package main:a.go:4:2: illegal rune literal
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论