看了目前国内网络上一些参考数榜首的几篇类似本标题的文章,觉得说得不够简明扼要直击本质,甚至有谬误。特此写下本文,以便参考。
单引号single quote: ’
go语言中使用单引号给rune(golang字符类型)初始化常量值。
注意rune类型不同于其它语言的byte或者char,这些通常表示一个字节(8bit)能容纳的内容,存储也是一个字节。rune其实是int32的别名,存储为4个字节,可以存放一个任何种类的文字字符,比如各种unicode字符。
// 下面的'⌘'字符储存为0x2318.
var char1,char2 rune
char1 = 'A'
char2 = '⌘'
双引号double quote: "
双引号用来创建只读的字符串常量。可以是可读的字符,也可以是\xNN表示的16进制字符等等。
它支持转义字符,如\t(空出一个tab位),\n(换行),不能用来直接引用多行字符。
看看下面的例子:
const sample = "\xbd\xb2\x3d\xbc\x20\xe2\x8c\x98"
const nihongo = "日本語"
for index, runeValue := range nihongo {
fmt.Printf("%#U starts at byte position %d\n", runeValue, index)
}
输出结果:
U+65E5 '日' starts at byte position 0
U+672C '本' starts at byte position 3
U+8A9E '語' starts at byte position 6
反引号back stick: `
反引号两大主要作用:
- 引用多行的字符串常量
- 忽略转义字符、特殊字符。比如反斜杠\,单双引号等等
因此,反引号多用在:
- 输入大段文字时(比如html网页文字);
- 正则表达式(本身含有很多反斜杠);
- 含有双引号的文字
参考1:Golang blog Strings, bytes, runes and characters in Go
参考2:CSDN博客[golang]golang中的双引号、单引号、反引号