1. 说明:

Golang 中没有专门的字符类型,如果要存储单个字符(字母),一般使用 byte 来保存。

字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的,而 Go 的字符串不同,它是由字节组成的。

例子如下:

package main

import (
    "fmt"
)
func main()  {
    var c1 byte = 'a'
    var c2 byte = '0'
    //直接输出:97 48  也就是字符的UTF-8码的值。
    fmt.Println(c1,c2)

    //格式化输出:c1=a , c2=0  这里%c表示按照字符输出
    fmt.Printf("c1=%c , c2=%c ",c1,c2)

    var c3 int = '中'
    fmt.Printf("c3=%c ",c3)

    //var c3 byte = '中'
    //报错,因为字符‘中’的UTF-8的码值是20013,超出byte的范围(0-255)。
    //fmt.Printf("c1=%c ",c3)
}

说明:

  1. 我们把一个字符(如:'a'、'0')赋值给byte。实际上是把字符对应的UTF-8的编码值赋值给byte类型变量。
  2. byte 是 uint8 的别名。直接输出之后,会输出字符对应的UTF-8编码值。想输出字符,要使用%c格式化输出。
  3. 如果用byte保存中文的字符,输出会报错。因为中文字符的UTF-8码值超出了byte能报存的范围。
  4. 可以使用int保存中文字符

2. 字符的使用细节:

使用细节如下:

  1. 字符常量是用单引号('')括起来的单个字符。例如:var c1 byte = 'a' var c2 int = '中' var c3 byte ='9'。
  2. Go 中允许使用转义字符来将其后的字符转变为特殊字符型常量。例如:var c3 byte = '\n'。这里 '\n'表示换行符。
package main

import (
    "fmt"
)
func main()  {
    var c3 byte = '\n'
    //直接输出:10
    fmt.Println(c3)
    //输出:“前面”之后换行输出“后面”
    fmt.Printf("前面%c后面",c3)
}
  1. Go 语 言 的 字 符 使 用 UTF-8 编 码 。 英文字母-1 个字节,汉字-3 个字节。如 果 想 查 询 字 符 对 应 的 utf8 码 值 http://www.mytju.com/classcode/tools/encode_utf8.asp
  2. 在 Go 中,字符的本质是一个整数,直接输出时,是该字符对应的 UTF-8 编码的码值。

  3. 可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的 unicode 字符。

  4. 字符类型是可以进行运算的,相当于一个整数,因为它都对应有 Unicode 码。

package main

import (
    "fmt"
)
func main()  {
    var c3 int = '中'+'a'
    //输出'中'字符的UTF-8码值 加上'a'字符的码值
    fmt.Println(c3)
}

results matching ""

    No results matching ""