返回顶部
首页 > 资讯 > 后端开发 > GO >关于 go 语言中符文、字符串和 unicode 字符的疑问
  • 904
分享到

关于 go 语言中符文、字符串和 unicode 字符的疑问

2024-04-04 23:04:03 904人浏览 安东尼
摘要

学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《关于 Go 语言中符文、字符串和 unicode 字符的疑问》,以下内容主要包含等知识点,如果你正在学习或准备学习golang,就都不要

学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《关于 Go 语言中符文、字符串和 unicode 字符的疑问》,以下内容主要包含等知识点,如果你正在学习或准备学习golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

go中的string是不可变的byte集合byteuint8 的别名。 runeint32 的别名,用于存储字符。

为什么 runes 使用 int32s,而不是 uin32s?不存在所谓的负面角色。

strings使用bytes,其中每个byte足以存储ascii字符,但不能存储unicode字符。然而,go 可以在字符串中存储 unicode 字符,但是索引一个字符会丢失它的数据。您无法在 go 中隐式将 float64 转换为 int ,因为它可能会丢失它,但是索引包含 unicode 字符的 string 的这种转换不会引发任何错误,只会丢失其数据。如何从 string 中索引 rune,而不是 byte

考虑以下程序及其输出。

package main

import (
    "fmt"
)

func main() {
    x := "ඞ"
    y := x[0]

    z := 'ඞ'

    fmt.printf("%s vs %c vs %c\n", x, y, z)
}
ඞ vs à vs ඞ

我觉得 string 用于存储 unicode 字符的做法是组合字节,因为也可以从 x 中索引 1。


正确答案


依次回答您的问题...

为什么 rune 是 int32 而不是 uint32?

我怀疑这可能与机器级别的整数本机表示有关,可能针对有符号整数与无符号整数进行了优化

但最终这并不重要。

首先,unicode 代码点(至少目前)仅使用 0x0000 到 0x10ffff 范围。也就是说,在处理合法 unicode 时,您永远不会遇到负面符文。

如果有 int24 这样的东西,这就足够了。 unicode(代码点)未使用高 8 位(显然是符号位所在的位置)。

所以这可能是使用 int32 的原因,与“优化”无关。

但即使 unicode 规范扩展到完整的 32 位范围,这仍然不会出现问题。

无论有符号还是无符号,内部表示都是一致的。因此,例如,如果某些 go 代码要与其他代码交换符文,并且其他代码使用无符号类型,则不会有问题,因为从根本上来说,交换的是每个符文中的 32 位,而不是解释由任何特定类型覆盖在这 32 位上。

如果使用符文执行算术,符号可能很重要,但如果您这样做,我希望您会对符文以及如何安全地操作它们有深入的了解(大概是为了某种形式的密码学 - 我想不出进行符文算术的任何其他原因。

对字符串中的字节进行索引“丢失数据”

不,在字符串中索引一个字节(这只是一个 []byte为您提供您所要求的数据:第 1 个指定字节。

没有任何损失(或获得)。

如果您想要一个由字符串中的字节序列表示的符文,那么您需要询问表示该 rune所有字节。

在字符串中索引符文

首先将字符串 ([]byte) 转换为 []rune,然后像对任何其他切片一样进行索引。因此,给定一个字符串 s 并希望获得 ith 符文:

r := []rune(s)[i]

以上就是《关于 go 语言中符文、字符串和 unicode 字符的疑问》的详细内容,更多关于的资料请关注编程网公众号!

您可能感兴趣的文档:

--结束END--

本文标题: 关于 go 语言中符文、字符串和 unicode 字符的疑问

本文链接: https://www.lsjlt.com/news/595667.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 关于 go 语言中符文、字符串和 unicode 字符的疑问
    学习知识要善于思考,思考,再思考!今天编程网小编就给大家带来《关于 go 语言中符文、字符串和 unicode 字符的疑问》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要...
    99+
    2024-04-04
  • 不同语言中字符串与Go语言字符串的差异
    go语言字符串与其他语言字符串的主要差异:不可变:创建后不能修改。unicode编码:支持不同语言的文本。utf-8编码:可表示所有unicode字符。无null终止符:节省字节空间。 ...
    99+
    2024-04-11
    go 字符串 python go语言 c++
  • Python 中文转Unicode字符串
    Python 3.6代码:# -*- coding: utf-8 -* def to_unicode(string): ret = '' for v in string: ret = ret + he...
    99+
    2023-01-31
    字符串 中文 Python
  • go语言删除字符串字符的方法介绍
    今天小编给大家分享的是go语言删除字符串字符的方法介绍,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。   删除字符串的方法:1、用TrimSpace()...
    99+
    2023-07-04
  • 不同语言中字符串操作与Go语言字符串操作的差异
    go 语言字符串操作的特点:使用 utf-8 编码表示字符串用 + 运算符拼接字符串用 [] 操作符索引字符串用 [start:end] 语法切片字符串用 == 运算符比较字符串 字符...
    99+
    2024-04-13
    go语言 字符串操作 python c++
  • 【C语言】字符函数和字符串函数
    目录 一、函数介绍及其模拟实现 1.strlen 2.strcpy 3.strcat 4.strcmp  5.strncpy 6.strncat  7.strncmp 8.strstr  9.strtok 10.strerror   11....
    99+
    2023-09-15
    c语言 开发语言
  • Go语言字符串怎么用
    这篇文章主要为大家展示了“Go语言字符串怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Go语言字符串怎么用”这篇文章吧。包含Contains(s,substr string) bool判断...
    99+
    2023-06-25
  • Go语言技巧:快速统计字符串中字符频率
    Go语言技巧:快速统计字符串中字符频率 在Go语言中,统计字符串中字符出现的频率是一个常见的操作。通过使用map数据结构,我们可以快速、高效地实现这一功能。在本文中,我们将介绍如何使用...
    99+
    2024-03-12
    go语言 字符频率 字符串统计
  • c语言中字符串与字符串数组详解
    目录字符串字符串输出输入字符串字符串常用方法字符串数组总结字符串 用双引号引起来的就是字符串,字符串由字符组成 字符串使用%s格式化输出 字符串以\0结尾,...
    99+
    2024-04-02
  • C语言解决字符串中插入和删除某段字符串问题
    目录字符串中插入某段字符核心思想字符串删除某段字符串核心思想总结字符串中插入某段字符 核心思想 已知插入字符串的长度len,将插入的位置的后面的字母统统往后移动len个长度。 最后将...
    99+
    2023-02-06
    C语言字符串 插入某段字符串 删除某段字符串
  • C语言中字符函数和字符串函数介绍
    本篇内容介绍了“C语言中字符函数和字符串函数介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录前言求字符串长度strlen介绍strle...
    99+
    2023-06-20
  • C语言:字符函数和字符串函数(一篇拿捏字符串函数!)
    目录 求字符串长度: 1. strlen(字符串长度) 长度不受限制函数: 2. strcpy(字符串拷贝) 3. strcat(字符串追加) 4. strcmp(字符串比较) 长度受限制函数: 5. strncpy(字符串拷贝) 6. ...
    99+
    2023-10-02
    c语言 开发语言 深度学习 学习 笔记 c++ 算法
  • go语言中字符串如何遍历
    今天小编给大家分享一下go语言中字符串如何遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。字符串遍历方法:1、使用“for...
    99+
    2023-07-05
  • Go语言中的字符串截取技巧
    Go语言中的字符串截取技巧 在Go语言中,字符串截取是一个常见的操作,可以通过一些技巧和函数来实现对字符串的截取和处理。本文将介绍一些常用的字符串截取技巧,并给出具体的代码示例。 1....
    99+
    2024-03-12
    字符串拼接 切片操作 子串查找 go语言
  • 解密Go语言中字符串的奥秘
    在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《解密Go语言中字符串的奥秘》就很适合你!本篇内容主要包括##content_titl...
    99+
    2024-04-05
  • C语言的字符函数和字符串函数详解
    目录0. 前言1.函数介绍及部分函数模拟实现1.1 strlen模拟实现1.2 strcpy模拟实现1.3 strcat模拟实现1.4 strcmp 模拟实现1.5 str...
    99+
    2024-04-02
  • go语言如何比较字符串
    这篇文章主要介绍“go语言如何比较字符串”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言如何比较字符串”文章能帮助大家解决问题。比较方法:1、直接使用“==”运算符比较,语法“str1 == ...
    99+
    2023-07-05
  • go语言如何重复字符串
    本篇内容介绍了“go语言如何重复字符串”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在go语言中,可以使用Strings包里的Repeat(...
    99+
    2023-07-05
  • Go语言如何拼接字符串
    本篇内容主要讲解“Go语言如何拼接字符串”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Go语言如何拼接字符串”吧!拼接字符串的方法:1、使用“+”号拼接,语法“str = str1 + str2...
    99+
    2023-07-04
  • go语言如何截取字符串
    这篇文章主要讲解了“go语言如何截取字符串”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言如何截取字符串”吧!截取方法:1、截取单个字符,语法“string[index]”,其中“st...
    99+
    2023-07-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作