首页 > 文章列表 > 什么是符文?

什么是符文?

golang
316 2023-03-08

问题内容

runeGo中的 a 是什么?

我一直在谷歌搜索,但 Golang 只在一行中说: runeint32.

但是整数怎么会像交换案例一样到处使用呢?

下面是一个函数swapcase。什么是<=-

为什么没有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/H6wjLZj6lW

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

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

正确答案

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