Go 语言中的字符串
2009 年 2 月 2 日
字符串字面量可以包含转义字符, 如第 2 章提到的 \n
。 如果你想要的是字符 \n
本身而不是一个新的文本行, 那么你可以像代码清单 9-1 所示的那样, 使用反引号( `
)而不是双引号( "
)来包围文本。 使用反引号包围的字符串被称为原始字符串字面量。
代码清单 9-1 原始字符串字面量: raw.go
fmt.Println("peace be upon you\nupon you be peace") fmt.Println(`strings can span multiple lines with the \n escape sequence`)
执行这段代码将产生以下输出:
peace be upon you upon you be peace strings can span multiple lines with the \n escape sequence
跟普通字符串字面量不同的是, 原始字符串字面量可以在代码里面跨越多个文本行, 就像代码清单 9-2 所示的那样。
代码清单 9-2 跨越多行的原始字符串字面量: raw-lines.go
fmt.Println(` peace be upon you upon you be peace`)
执行这段代码将产生以下输出,并且字符串中用于缩进的制表符也被正确地打印了出来:
peace be upon you upon you be peace
正如代码清单 9-3 所示, 无论是字符串字面量还是原始字符串字面量, 最终都将变成字符串。
代码清单 9-3 字符串类型: raw-type.go
fmt.Printf("%v is a %[1]T\n", "literal string") // 打印出 “literal string is a string” fmt.Printf("%v is a %[1]T\n", `raw string literal`) // 打印出 “raw string literal is a string”