gpt4 book ai didi

go - 什么是 rune ?

转载 作者:IT老高 更新时间:2023-10-28 12:56:38 26 4
gpt4 key购买 nike

什么是rune在围棋?

我一直在谷歌搜索,但 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)
}

我知道这是映射 runestring以便它可以返回交换的字符串。但是我不明白 rune 到底是怎么回事或 byte在这里工作。

最佳答案

rune 文字只是 32 位整数值(但它们是无类型常量,因此它们的类型可以改变)。它们代表 unicode 代码点。例如, rune 文字 '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 - 什么是 rune ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19310700/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com