GoLang中的符文是什么?

227 阅读1分钟

字符串总是用字符或字节来定义。在GoLang中,字符串总是由字节组成。Go使用UTF-8编码,所以任何有效的字符都可以用Unicode码位表示。

什么是GoLang符文?

在Unicode中,一个字符是用 "码点 "来定义的。Go语言为这种代码点引入了一个新的术语,叫做符文。

Go rune也是int32类型的别名,因为Go使用UTF-8编码。关于符文和字符串的一些有趣的观点。

  • 字符串是由字节组成的,它们可以包含有效的字符,可以用符文表示。
  • 我们可以使用rune()函数将字符串转换为符文数组。
  • 对于ASCII字符,符文值将与字节值相同。

在围棋中找到一个字符的符文

让我们来看看一个打印字符符文的程序。

package main

import (
	"fmt"
)

func main() {
    s := 'a'

    s_rune := rune(s)
    
    fmt.Println(s_rune)
}

GoLang字符串到符文

让我们用rune()函数打印字符串的符文值。

package main

import (
	"fmt"
)

func main() {
    s := "GoLang"

    s_rune := []rune(s)
    fmt.Println(s_rune) // [71 111 76 97 110 103]

}

如果我们使用byte()函数转换为字节值数组,整数数组的输出看起来是一样的。那么,字节和符文的区别是什么,让我们在下一节中了解一下。

了解字节和符文的区别

让我们来打印一个非ascii字符的字符串的字节数组和符文。

package main

import (
	"fmt"
)

func main() {
    s := "GÖ"

    s_rune := []rune(s)
    s_byte := []byte(s)
    
    fmt.Println(s_rune)  // [71 214]
    fmt.Println(s_byte)  // [71 195 150]
}

特殊的Unicode字符Ö符文值是214,但它需要两个字节进行编码。