Golang 单引号、双引号与反引号

2020-04-17 15:40:10 浏览数 (1)

单引号

单引号在 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

0 人点赞