单引号
单引号在 Golang 表示一个字符,使用一个特殊类型 rune 表示字符型。rune 为 int32 的别名,它完全等价于 int32,习惯上用它来区别字符值和整数值。rune 表示的是字符的 Unicode 码值。
代码语言:javascript复制package main
import(
"fmt"
)
func main(){
var c rune = '你'
fmt.Printf("c=%v ct=%Tn", c, c)
}
编译运行输出:
代码语言:javascript复制c=20320 ct=int32
字符’你’的 Unicode 码值是 0x4f60,十进制是 20320。
双引号
双引号用来创建可解析的字符串字面量,支持转义,但不能用来引用多行。
代码语言:javascript复制package main
import(
"fmt"
)
func main(){
str := "hellon世界"
fmt.Println(str)
}
编译运行输出:
代码语言:javascript复制hello
世界
反引号
反引号用来创建 原生的字符串字面量 ,这些字符串可能由多行组成,不支持任何转义序列。原生的字符串字面量多用于书写多行消息、HTML以及正则表达式。
代码语言:javascript复制package main
import(
"fmt"
)
func main(){
str := `hellon世界
我是 dablelv`
fmt.Println(str)
}
编译运行输出:
代码语言:javascript复制hellon世界
我是 dablelv
FAQ
(1)如何在多行书写不换行的字符串。 有时使用 fmt.Printf() 输出时,由于格式化字符串太长,想分多行书写,但是又不想引入换行。此时需要将多行的字符串使用运算符 拼接在一起。
代码语言:javascript复制package main
import(
"fmt"
)
func main(){
a := 1
b := true
fmt.Printf("Format string too long, "
"the value of var is: a=%v b=%vn",
a, b)
}
编译运行输出:
代码语言:javascript复制Format string too long, the value of var is: a=1 b=true
参考文献
[1] Golang Rune literals [2] Golang String literals