Go语言的字符和字符串

2018-06-27  本文已影响15人  caoxinyiyi

unicode字符基础知识了解

Go语言中的字符

在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称。

下面用一个简单的程序来演示字符类型:

package main
import (
    "fmt"
    "reflect"
)
func main() {
    r := '我'
    fmt.Printf("%q的类型为:%t 二进制为:%b\n", r, r, r)
    rType := reflect.TypeOf(r).Kind()
    fmt.Printf("r的实际类型为:%s\n", rType)
}

程序输出:

'我'的类型为:%!t(int32=25105) 二进制为:110001000010001
r的实际类型为:int32

Go语言中的字符串

Go语言的字符串有两种方式来表示:

Go语言的字符串是以UTF-8格式编码并存储的,下面有一个简单的例子:


package main
import (
    "fmt"
)
func main() {
    s := "我"
    fmt.Printf("s的类型为:%t, 长度为:%d, 16进制为:%x\n", s, len(s), s)
    for i, b := range []byte(s) {
        fmt.Printf("第%d个字节为:%b\n", i, b)
    }

程序输出:

s的类型为:%!t(string=我), 长度为:3, 16进制为:e68891
第0个字节为:11100110
第1个字节为:10001000
第2个字节为:10010001

变量s中存放的是这个字符串的UTF-8编码,当你使用len(s)函数获取字符串的长度时,获取的是该字符串的UTF-8编码长度,存储一个字符可能需要 2个、3个或者4个字节,它是不固定的。

UTF-8的编码遵循如下2条规则:

上一篇 下一篇

猜你喜欢

热点阅读