当前位置: 首页 > 知识库问答 >
问题:

什么是符文?

孟德曜
2023-03-14

什么是Go中的符文

我一直在谷歌搜索,但Golang只说了一行:runeint32的别名。

但是为什么整数像交换用例一样被广泛使用呢?

下面是一个函数交换案例。所有的是什么

为什么开关没有任何参数?

func SwapRune(r rune) rune {
    switch {
    case 'a' <= r && r <= 'z':
        return r - 'a' + 'A'
    case 'A' <= r && r <= 'Z':
        return r - 'A' + 'a'
    default:
        return r
    }
}

他们中的大多数人来自美国http://play.golang.org/p/H6wjLZj6lW

func SwapCase(str string) string {
    return strings.Map(SwapRune, str)
}

我知道这是将rune映射到string以便它可以返回交换的字符串。但我不明白runebyte究竟是如何工作的。


共有3个答案

凌黎明
2023-03-14

我一直试图保持我的语言简单,以便外行理解符文

符文是一个角色。就这样。

这是一个单一的字符。它是来自世界任何地方任何语言的任何字母表的字符。

为了得到我们使用的字符串

double-quotes ""

back-ticks ``

弦和符文不同。在符文中,我们使用

single-quotes ''

现在符文也是int32的别名...呃什么?

每个字符映射到某个数字,因此它是我们存储的数字。例如,a映射到97,当我们存储这个数字时,它就是这个数字,所以这就是为什么rune是int32的别名。但不只是任何数字。它是一个包含32个“0和1”或“4”字节的数字。(注:UTF-8是一种4字节编码方案)

符文与字符串的关系如何?

字符串是符文的集合。在以下代码中:

    package main

    import (
        "fmt"
    )

    func main() {
        fmt.Println([]byte("Hello"))
    }

我们尝试将字符串转换为字节流。输出为:

[72 101 108 108 111]

我们可以看到组成字符串的每个字节都是符文。

温开畅
2023-03-14

来自Go lang发行说明:http://golang.org/doc/go1#rune

Rune是一种类型。它占用32位,旨在表示Unicode CodePoint。作为类比,以“ASCII”编码的英文字符集有128个代码点。因此能够适合一个字节(8位)。根据这个(错误的)假设,C将字符视为“字节”char,将“字符串”视为“字符序列”char*

但你猜怎么着。除了“abcde”之外,还有许多其他由人类发明的符号符号。有太多了,我们需要32位来编码它们。

在Go语言中,stringbytes的序列。但是,由于多个字节可以表示符文代码点,因此字符串值也可以包含符文。因此,它可以转换为[]rune,反之亦然。

Unicode软件包http://golang.org/pkg/unicode/可以体验到挑战的丰富性。

吉栋
2023-03-14

符文文本只是32位整数值(但它们是非类型化常量,因此它们的类型可以更改)。它们代表unicode代码点。例如,符文'a'实际上是数字97

因此,您的程序相当于:

package main

import "fmt"

func SwapRune(r rune) rune {
    switch {
    case 97 <= r && r <= 122:
        return r - 32
    case 65 <= r && r <= 90:
        return r + 32
    default:
        return r
    }
}

func main() {
    fmt.Println(SwapRune('a'))
}

如果你看一下Unicode映射,这应该是显而易见的,它在该范围内与ASCII相同。此外,32实际上是字符的大写和小写代码点之间的偏移量。因此,通过将32添加到'A',您可以得到'A',反之亦然。

 类似资料:
  • 问题内容: 什么是Go? 我一直在谷歌搜索,但Golang只说了一行: 是的别名。 但是,为什么像交换案例一样在各处使用整数呢? 以下是函数交换案例。什么都和? 为什么没有任何论点呢? 应该是说 和 ,但什么是? 其中大多数来自http://play.golang.org/p/H6wjLZj6lW 我知道这是映射到,以便它可以返回交换后的字符串。但我不明白,究竟是如何或在这里工作。 问题答案: 符

  • 问题内容: 什么是类描述符? 它是特定类的对象吗? 问题答案: 是的,对象是某个“类”的类描述符。 从API中: 此类的实例表示正在运行的Java应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组还属于一个反映为Class对象的类,该类对象由元素类型和维数相同的所有数组共享。原始Java类型(布尔型,字节型,字符型,短型,整型,长型,浮点型和双精度型)以及关键字void也都表示为对象。

  • 其实说到字符串,这个概念没有具体的说法,但是我们根据平时的归纳总结,也能一段,便于大家理解,字符串就是把字符连在一直,串成一串又一串;字符串内可以包含数字、字母、特殊符号等所有内容;在Python中只要对一些内容加上对双引号或一对单引号,就默认为是字符串;(三对单引号或三对双引号可以写多行字符串)。 字符串的关键是str,是string的缩写。 一、什么是字符串? 解释:对于"Holl world

  • 问题内容: 我正在看一些使用该符号的Python代码,但我不知道它的作用。我也不清楚要搜索的内容,因为搜索Python文档时会发现该符号,否则Google不会返回相关结果。 问题答案: 行首的符号用于类,函数和方法修饰符。 在这里阅读更多: PEP 318: Decorators Python Decorators 你会遇到的最常见的Python装饰器是: @property @classmeth

  • 问题内容: 我已经使用Java几年了,但是直到最近我还没有遇到过这种构造: 这可能是一个非常简单的问题,但是有人可以解释吗?我该如何阅读?我很确定我知道它是如何工作的。 如果isHere为真,getHereCount()则称为 如果isHere为假,getAwayCount()则调用。 正确?这个结构叫做什么? 问题答案: 是的,它是 它称为条件运算符。许多人(错误地)将其称为三元运算符,因为它是

  • 问题内容: 什么是selenium? 当您打开Selenium的官方页面时,您首先读到的是“什么是Selenium?”中的“ Selenium automates browser”。部分。“selenium的哪个部分适合我?”部分 下面提供了Selenium WebDriver和Selenium IDE之间的选择。由此,我推断出Selenium是一组工具,并且该集合包括IDE,WebDriver