Golang中unicode.ToTitle返回int类型而非rune类型的问题

Golang中unicode.ToTitle返回int类型而非rune类型的问题 大家好, 我刚开始学习Go语言,在查看Unicode模块时,我写了以下代码:

rune_2 := 'b'
result := unicode.ToTitle(rune_2)
println(result)

根据官方文档此处的理解,我应该得到返回值“B”,但我实际得到的是66(int32值)。我实在不明白为什么会这样,因为我遵循了官方示例中使用的相同逻辑,我甚至查看了源代码,这个方法应该返回一个rune。


更多关于Golang中unicode.ToTitle返回int类型而非rune类型的问题的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

rune 类型只是一个别名 type rune = int32

一个别名声明的形式为

type T1 = T2

与之相对的是标准的类型定义

type T1 T2

别名声明不会创建一个与其来源类型不同的新类型。它只是为 T2 所表示的类型引入一个别名 T1,即另一种拼写方式。

Type alias explained

类型别名详解

Go 的类型别名支持在包之间移动类型时进行渐进式代码修复。它们并非用于日常使用。

更多关于Golang中unicode.ToTitle返回int类型而非rune类型的问题的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,unicode.ToTitle 函数确实返回 rune 类型,但 rune 在Go中本质上是 int32 的别名。当你使用 println 打印时,它会输出该字符的Unicode码点(整数形式),而不是字符本身。

要正确显示字符,你需要将其转换为字符串或使用格式化输出。以下是示例代码:

package main

import (
    "fmt"
    "unicode"
)

func main() {
    rune_2 := 'b'
    result := unicode.ToTitle(rune_2)
    fmt.Printf("字符: %c\n", result)  // 输出: 字符: B
    fmt.Println("字符串:", string(result))  // 输出: 字符串: B
    fmt.Println("码点:", result)  // 输出: 码点: 66
}

println 是内置函数,主要用于调试,它会直接打印数值。而 fmt 包提供了更丰富的格式化输出功能。%c 格式化动词专门用于打印字符,string() 转换可以将rune转换为字符串。

回到顶部