教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 Go string byte rune 深入理解

Go string byte rune 深入理解

发布时间:2021-04-13   编辑:jiaochengji.com
教程集为您提供Go string byte rune 深入理解等资源,欢迎您收藏本站,我们将为您提供最新的Go string byte rune 深入理解资源

在 go 中。有 byte, string 以及 rune.
虽然很常见的,但是如果要理解他们的区别还是很重要的,不然可能就犯错误了。
比如索引字符串中的第n个字符,但是如果仅仅使用下标去索引,就大错特错了。

string

在go中, string不是面向字符的,仅仅是byte的数组
我们可以通过打印来查看
事先说明:
%x: 将其16进制数打印.
%q: 打印并且过滤掉不可以打印的字节
% q: 等于 plus, 这个不只可以过滤不可以打印的字符,而且可以过滤掉不是 ascii的字符会翻译成 UTF-8

上例子

const sample = "\xbd\xb2\x3d\xbc\x20\xe2\x8c\x98"
fmt.Printf("%x\n", sample) // bdb23dbc20e28c98 
fmt.Printf("% x\n", ) // bd b2 3d bc 20 e2 8c 98
fmt.Printf("%q\n", sample) // "\xbd\xb2=\xbc ⌘" 
fmt.Printf("% q\n", sample) //"\xbd\xb2=\xbc \u2318"

另外一个例子: 我们通过三种方式打印这个字符

const placeOfInterest = `⌘`
fmt.Printf("只是打印 string: %s\n", placeOfInterest)

fmt.Printf("quoted string: % q\n", placeOfInterest)
fmt.Printf("string的16进制: % x\n", placeOfInterest)
fmt.Printf("string的16进制: %d\n", len(placeOfInterest))

输出结果

只是打印 string: ⌘
quoted string: "\u2318"
string的16进制: e2 8c 98

获取很懵逼,但是看下面一段代码

	// 我们将 e2 8c 98 的 16进制化为10进制  
	fmt.Printf("%s\n", []byte{226, 140,152 })

输出:

意味着 ⌘ 这个字符的 unicode编码为 U 2318, 代表的字节为 e2 8c 98 这意味着这些字节的 utf-8 编码为 2318

rune

rune 在 go 中是 int32 别名。 是为了解决 utf-8 中编码不一致的问题。用 int32 去直接存储 code-point (码点) ,即为rune 。来表示一个 utf-8的编码。

例如:
的 unicode 的值为 \u2318。
那么, 将 2318 为16进制,化为10进制后就为 8984

	var rn rune = 8984
	fmt.Printf("rune=%q\n", rn)

输出结果即为

官方文档 介绍 strings

到此这篇关于“Go string byte rune 深入理解”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go string byte rune 深入理解
xstrings:Go 语言字符串库的补完
go语言中的for循环
2.GO语言之基本数据类型,运算符
Golang标准库——encoding(1)
15Go语言:函数是“一等公民“
golang把数字变字符串_golang高频面试题:翻转含有中文、数字、英文字母的字符串...
Go安装、变量声明、strings模块
Golang标准库——encoding(2)
2020-10-14Go语言基本类型:整型、浮点型、字符串

[关闭]
~ ~