package main
import (
"fmt"
)
func main() {
fmt.Printf("%c, %x, %x", 'ᚵ', 'ᚵ', "ᚵ")
}
输出:
ᚵ, 16b5, e19ab5
答案 0 :(得分:4)
因为每个人都做了不同的事情。两者都将参数格式化为十六进制数,但每个都以不同方式查看参数。
fmt.Printf("%x", 'ᚵ')
打印一个unicode字符(符文,如果你愿意),作为32位整数(int32)。
fmt.Printf("%x", "ᚵ")
将字符串(字符串的单个字节)打印为8位整数(uint8)。当使用utf-8编码时,符文在三个字节上编码。这就是为什么有六个十六进制数字(每个字节两个)的原因。
要详细研究字符串的打印,请从文件fmtString
中的函数fmt/print.go
开始。
func (p *pp) fmtString(v string, verb rune) {