go08 多语言文本

简介: go08 多语言文本

go08 多语言文本

声明字符串

声明字符串:

字符串的零值:



字符串字面值/原始字符串字面值

字符串字面值可以包含转义字符,例如 \n 。

但如果你确实想得到 \n 而不是换行的话,可以使用 ` 来代替 “,这叫做原始字符串字面值。

3903db6a2f2a4919a18f19e789270fd7.png

cf67921ba1e84f39a86d52c96ccd349d.png


` 也可以用与打印多行文本的情况:



619aba34f0fd4498beb0f5d942c2b304.png

4a6ba5aa0d40453d9fdbb10a25fd53c7.png


字符,code points,runes,bytes

Unicode 联盟为超过 100 万个字符分配了相应的数值,这个数叫做 code point。


为了表示这样的 unicode code point,Go 语言提供了 rune 这个类型,它是 int32 的一个类型别名。


而 byte 是 uint8 类型的别名,目的是用于二进制数据。


byte 倒是可以表示由 ASCII 定义的英语字符,它是 Unicode 的一个子集(共128个字符)


类型别名

类型别名就是同一个类型的另一个名字。

所以,rune 和 int32 可以互换使用。

也可以自定义类型别名,语法如下:


打印

如果想打印字符而不是数值,使用 %c 格式化动词。

任何整数类型都可以使用 %c 打印,但是 rune 意味着该数值表示了一个字符。

字符


字符字面值使用 ‘’ 括起来。例如:’A’ 。

如果没指定字符类型的话,那么 Go 会推断它的类型为 rune 。

这里的 grade 仍然包含一个数值,本例中就是 65,它是 A 的 code point 。

字符字面值也可以用 byte 类型:


string

可一个给某个变量赋予不同的 string 值,但是 string 本身是不可变的。

Go 的内置函数

len 是 Go 语言的一个内置函数。


b9972cae231b49689494ae21117909f1.png


本例中 len 返回 message 所占的 byte 数。

Go 有很多内置函数,它们不需要 import 。


UTF-8


Go 中的字符串是用 UTF-8 编码的,UTF-8 是 Unicode Code Point 的几种编码之一。


UTF-8 是一种有效率的可变长度的编码,每个 code point 可以是 8 位、16 位或 32 位的。


通过使用可变长度编码,UTF-8 使得从 ASCII 的转换变得简单明了,因为 ASCII 字符与其 UTF-8 编码的对应字符是相同的。


UTF-8 是万维网的主要字符编码。它是由 Ken Thompson 于 1992 年发明的,他是 Go 语言的设计者之一。


ROT13


ROT13(旋转13)是凯撒密码在 20 世纪的变体。


它会把字母替换成 +13 后的对应的字母。

本例中,程序访问的是 message 这个字符串的每个字节(8位),没有考虑多字节的情况(16、32位)。


如何支持西班牙语、俄语、汉语等?


把字符解码成 rune 类型,然后再进行操作。

使用 utf-8 包,它提供可以按 rune 计算字符串长度的方法。


DecodeRuneInString 函数会返回第一个字符,以及字符所占的字节数。


所以 Go 里的函数可以返回多个值。


f9d67223a0e541239d12da6dc78853e8.png

8aec7520efd14f88bc5133c1ed58eaa9.png


range

使用 range 关键字,可以遍历各种集合。


d1ff1be010a2470484d5e7f8c9099cb1.png




3893a3e4fb7b49c38aaf1a0287d55b67.png


也可以去掉索引:

【上一讲】go07 很大的数

【上一讲】go09 类型转换

目录
相关文章
|
8月前
|
Go
Go 语言输出文本函数详解
Go语言拥有三个用于输出文本的函数: Print() Println() Printf() Print() 函数以其默认格式打印其参数。
59 0
Go---Go语言中创建文本文档出现read-only上锁情况
Go---Go语言中创建文本文档出现read-only上锁情况
Go---Go语言中创建文本文档出现read-only上锁情况
|
缓存 Go
Go---Go语言关于文本文档的操作
Go---Go语言关于文本文档的操作
|
存储 Java Go
深入Go语言文本类型
Go的作者Ken Thompson是UTF-8的发明人(也是C,Unix,Plan9等的创始人),因此在关于字符编码上,Go有着独到而周全的设计。本文介绍了Go语言中的三种内置文本类型:`string`, `byte`,`rune`的内部表示与相互转换。 ## 1. 概览 Go中,字符串`string`是内置类型,与文本处理相关的内置类型还有符文`rune`和字节`byte`。
2765 0
|
11天前
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
51 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
1月前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
41 7
|
1月前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
1月前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
102 71
|
30天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
106 67
|
1月前
|
Go 索引
go语言for遍历数组或切片
go语言for遍历数组或切片
101 62