go08 多语言文本

本文介绍了Go语言中字符串的声明、零值、字面量以及如何处理Unicode字符。字符串是不可变的,可以用UTF-8编码的Unicode码点表示。通过rune和byte类型,Go支持多语言文本。此外,还讲解了如何使用`range`关键字遍历字符串,以及处理多字节字符的方法。Go内置的len函数可用于计算字符串长度。文章最后提到了ROT13编码,并指出在处理不同语言时,需要将字符解码为rune类型。
摘要由CSDN通过智能技术生成

go08 多语言文本

声明字符串

声明字符串:
在这里插入图片描述
字符串的零值:
在这里插入图片描述

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

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

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

` 也可以用与打印多行文本的情况:
在这里插入图片描述
在这里插入图片描述

字符,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 语言的一个内置函数。
在这里插入图片描述
本例中 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 里的函数可以返回多个值。
在这里插入图片描述
在这里插入图片描述

range

使用 range 关键字,可以遍历各种集合。
在这里插入图片描述
在这里插入图片描述
也可以去掉索引:
在这里插入图片描述
在这里插入图片描述
【上一讲】go07 很大的数
【上一讲】go09 类型转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值