- 字符串转义
go语言的字符串常见转义符包含回车、换行、单双引号、制表符等。
转义符 | 含义 |
---|---|
\r | 转义回车,返回行首 |
\n | 转义换行,跳到下一行的同列位置 |
\t | 转义制表 |
\' | 转义单引号 |
\" | 转义双引号" |
\\ | 转义反斜杠\ |
实例:
package main
import (
"fmt"
)
func main() {
fmt.Println("str := \"c:\\go\\bin\\go.exe\"")
}
- 定义多行字符串
以双引号的形式书写字符串,是字符串的常见表达方式,被称为字符串字面量(string literal)。双引号字面量不能跨行,如果需要在源码中嵌入一个多行字符串时,就必须使用"`"字符。两个反引号间的字符串将被原样赋值到变量str中。
package main
import (
"fmt"
)
const str = `第一行
第二行
第三行
\r\n
`
func main() {
fmt.Println(str)
}
在这种方式下,文本将会原样输出。反引号之间的换行将被作为字符串中的换行,但是所有的转义字符均无效,文本将会原样输出。多行字符串一般用于内嵌源码和内嵌数据等。下面定义一个常量codeTemplate
const codeTemplate = `// Generated by github.com/davyxu/cellnet/protoc-gen-msg
// DO NOT EDIT! {{range .Protas}}
// Source: {{ . Name}}{{end}}
package {{ .PackageName}}
{{if gt .TotalMessages 0}}
import (
"github.com/davyxu/cellnet"
"reflect"
_ "github.com/davyxu/cellnet/codec/pb"
}
{{end}}
func init() {
{{range .Protos}}
// {{.Name}} {{range .Messages}}
cellnet.RegisterMessageMeta("pb", "{{.Full Name}}", reflect.TypeOf((*{{.Name}})(nil)).Elem(), {{.MsgID}}) {{end}}
{{end}}
}
`
在 “`” 间的所有代码均不会被go编译器识别,而作为字符串的一部分。