首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >符文是什么?

符文是什么?
EN

Stack Overflow用户
提问于 2013-10-11 13:14:58
回答 5查看 115.7K关注 0票数 262

Go中的rune是什么?

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

但是为什么整型像交换情况一样被广泛使用呢?

下面是一个函数交换案例。什么是<=-

为什么switch没有任何参数?

&&应该是什么意思,但是什么是r <= 'z'

代码语言:javascript
复制
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

代码语言:javascript
复制
func SwapCase(str string) string {
    return strings.Map(SwapRune, str)
}

我知道这是将rune映射到string,这样它就可以返回交换后的字符串。但我不明白runebyte在这里到底是如何工作的。

EN

回答 5

Stack Overflow用户

发布于 2013-10-12 03:28:47

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

Rune是一种类型。它占用32位,用于表示Unicode CodePoint。打个比方,用'ASCII‘编码的英文字符集有128个码点。因此能够容纳在一个字节(8位)内。根据这个(错误的)假设,C将字符视为“字节”char,而将“字符串”视为“字符序列”char*

但是你猜怎么回事。除了“abcde..”之外,还有许多其他人类发明的符号。符号。而且有如此之多,我们需要32位来编码它们。

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

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

票数 73
EN

Stack Overflow用户

发布于 2015-07-09 01:31:05

我没有足够的声誉在fabrizioM的answer上发表评论,所以我不得不在这里发表评论。

Fabrizio的答案在很大程度上是正确的,他当然抓住了问题的本质-尽管必须做出区分。

字符串不一定是符文序列。它是一个‘字节切片’的包装器,一个切片是一个Go数组的包装器。这有什么不同呢?

符文类型必须是32位的值,这意味着符文类型的值序列必须具有一定数量的位x*32。相反,作为字节序列的字符串具有x*8位的长度。如果所有字符串实际上都是Unicode,则这种差异不会有任何影响。然而,由于字符串是字节的切片,所以Go可以使用ASCII或任何其他任意字节编码。

但是,字符串文字需要写入以UTF-8编码的源代码中。

信息来源:http://blog.golang.org/strings

票数 38
EN

Stack Overflow用户

发布于 2017-11-03 03:00:31

其他人都已经谈到了与符文相关的部分,所以我不打算谈论这一点。

然而,还有一个关于switch没有任何参数的问题。这很简单,因为在Golang中,不带表达式的switch是表示if/else逻辑的另一种方式。例如,编写以下代码:

代码语言:javascript
复制
t := time.Now()
switch {
case t.Hour() < 12:
    fmt.Println("It's before noon")
default:
    fmt.Println("It's after noon")
}

与编写以下代码相同:

代码语言:javascript
复制
t := time.Now()
if t.Hour() < 12 {
    fmt.Println("It's before noon")
} else {
    fmt.Println("It's after noon")
}

你可以阅读更多的here

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19310700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档