“A”和“A”之间的区别[0]

时间:2017-09-05 03:17:56

标签: go

我将此代码编写为将TEXT转换为BINARY

fmt.Printf("%s\n", fmt.Sprintf("%08b", "A"))

无效,请打印留言:%!b(string=0000000A)

但当我将"A"更改为"A"[0]时工作正常:

fmt.Printf("%s\n", fmt.Sprintf("%08b", "A"[0]))

输出为01000001

上述陈述之间有什么区别?

1 个答案:

答案 0 :(得分:4)

Golang将字符串与字节区分开来。

"A"是一个字符串,技术上a read-only slice of bytes"A"[0]是此序列中的第一个字节,其值为0x41。

您要求首先使用二进制数字在八个字符的字段中打印一个字符串("A"),然后再打印一个字节("A"[0])。你的第一个输出很有趣,因为你试图打印一个字符串,好像它是某种字节值。但是一个字节的序列与单个字节不同。你的第二个输出更自然,因为你抓住了字符串的第一个字节(在索引0处),获得了0x41。