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

单引号

单引号在 Golang 表示一个字符,使用一个特殊类型 rune 表示字符型。rune 为 int32 的别名,它完全等价于 int32,习惯上用它来区别字符值和整数值。rune 表示字符的 Unicode 码值。

package main

import(
	"fmt"
)

func main(){
	var c rune = '你'
	fmt.Printf("c=%v ct=%T\n", c, c)
}

编译运行输出:

c=20320 ct=int32

字符’你’的 Unicode 码值是 0x4f60,十进制是 20320。

双引号

双引号用来创建可解析的字符串字面量,支持转义,但不能用来引用多行。

package main

import(
	"fmt"
)

func main(){
	str := "hello\n世界"
	fmt.Println(str)
}

编译运行输出:

hello
世界

反引号

反引号用来创建原生的字符串字面量 ,这些字符串可能由多行组成,不支持任何转义序列。原生的字符串字面量多用于书写多行消息、HTML 以及正则表达式。

package main

import(
	"fmt"
)

func main(){
	str := `hello\n世界
我是 dablelv`
	fmt.Println(str)
}

编译运行输出:

hello\n世界
我是 dablelv

FAQ

(1)如何在多行书写不换行的字符串。
有时使用 fmt.Printf() 输出时,由于格式化字符串太长,想分多行书写,但是又不想引入换行。此时需要将多行的字符串使用运算符 + 拼接在一起。

package main

import(
        "fmt"
)

func main(){
        a := 1
        b := true
        fmt.Printf("Format string too long, "+
                "the value of var is: a=%v b=%v\n",
                a, b)
}

编译运行输出:

Format string too long, the value of var is: a=1 b=true

参考文献

[1] Golang Rune literals
[2] Golang String literals

猜你喜欢

转载自blog.csdn.net/K346K346/article/details/105559800