略微加速

略速 - 互联网笔记

Go语言中的单引号、双引号、反引号(`)

2021-02-22 leiting (2320阅读)

标签 Golang

在Go语言中不倾向于使用单引号来表示字符串,请根据需要使用双引号或反引号。


一个Go语言字符串是一个任意字节的常量序列。Go语言的字符串类型在本质上就与其他语言的字符串类型不同。Java的String、C++的std::string以及python3的str类型都只是定宽字符序列,而 Go语言的字符串是一个用UTF-8编码的变宽字符序列,它的每一个字符都用一个或多个字节表示 


Go语言中的字符串字面量使用 双引号 或 反引号 来创建 

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

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


反引号中不能转义反引号,如果需要,可以拼接

query := 
    `SELECT *
FROM ` + "`table_name`"


结构体中,字段声明后可以跟一个可选的字符串字面量标记 tag,它将作为相应被声明字段的一个属性。一个空的标记字符串等价于一个缺失的标记。标记可以通过反射接口进行访问并参与到结构体的类型身份识别中,其他情况下这个属性将被忽略。

struct {
    x, y float64 ""  // an empty tag string is like an absent tag
    name string  "any string is permitted as a tag"
    _    [4]byte "ceci n'est pas un champ de structure"
}

// A struct corresponding to a TimeStamp protocol buffer.
// The tag strings define the protocol buffer field numbers;
// they follow the convention outlined by the reflect package.
struct {
    microsec  uint64 `protobuf:"1"`
    serverIP6 uint64 `protobuf:"2"`
}


北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3