为了账号安全,请及时绑定邮箱和手机立即绑定

什么是符文?

什么是符文?

Go
梦里花落0921 2021-07-01 10:00:21
runeGo 中的a是什么?我一直在谷歌搜索,但 Golang 只在一行中说:rune是int32.但是如何像交换案例一样到处使用整数呢?下面是一个函数交换案例。什么是所有<=和-?为什么没有switch任何论据?&&应该是什么意思,但什么是r <= 'z'?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/H6wjLZj6lWfunc SwapCase(str string) string {    return strings.Map(SwapRune, str)}我知道这是映射rune到string以便它可以返回交换的字符串。但我不明白,究竟是如何rune或byte在这里工作。
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

符文文字只是 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',反之亦然。


查看完整回答
反对 回复 2021-07-05
?
万千封印

TA贡献1891条经验 获得超3个赞

我试图保持我的语言简单,以便外行理解rune

符文是一个字符。就是这样。

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

要获取我们使用的字符串

double-quotes ""

或者

back-ticks ``

字符串不同于符文。在符文中我们使用

single-quotes ''

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

rune 是别名的原因int32是因为我们看到使用如下编码方案

//img1.sycdn.imooc.com//60e26c940001ef5d10820574.jpg

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


符文与弦有什么关系?


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


    package main


    import (

        "fmt"

    )


    func main() {

        fmt.Println([]byte("Hello"))

    }

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


[72 101 108 108 111]

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


查看完整回答
反对 回复 2021-07-05
  • 3 回答
  • 0 关注
  • 341 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信