go语言学习笔记 — 基本数据类型 — 字符串(8):转义字符串,定义多行字符串

  • 字符串转义

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编译器识别,而作为字符串的一部分。

你可能感兴趣的:(Golang)