字符串总是用字符或字节来定义。在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,但它需要两个字节进行编码。