一、多行输出
示例
func main() {str1 := `反引号多行字符串`str2 := "双引号" +" 多行" +" 字符串"//str3 := '单引号" +//" 多行" +//" 字符串'str4 := "双引号\n" +" 多行\n" +" 字符串\n"fmt.Println("str1", str1)fmt.Println("str2", str2)fmt.Println("str4", str4)//fmt.Println(str3)
}
单引号会直接报错。
输出结果
反引号时候正确输出了预期结果。
双引号如果仅通过+
连接,不会有什么变化,输出的依旧是单行。
双引号内部可以通过\n
控制换行。
二、Tag标签
总述
常用的有以下几种:json
,xml
,gorm
,validator
,protobuf
,bson
,mapstructure
。
encoding/json
: 这是 Go 语言的标准库,它使用标签来控制如何将结构体编码为 JSON 或从 JSON 解码到结构体。
encoding/xml
: 同样是 Go 语言的标准库,它使用标签来控制如何将结构体编码为 XML 或从 XML 解码到结构体。
gorm
: 这是一个流行的 Go 语言 ORM 库,它使用标签来定义数据库表和结构体之间的映射关系。
validator
: 这是一个用于数据验证的库,它使用标签来定义验证规则。
protobuf
: 这是 Google 的 Protocol Buffers 的 Go 语言实现,它使用标签来定义 Protobuf 消息和结构体之间的映射关系。
bson
: 这是 MongoDB 官方的 Go 驱动使用的,它使用标签来控制如何将结构体编码为 BSON 或从 BSON 解码到结构体。
mapstructure
: 这是一个用于将通用的 map 转换为结构体的库,它使用标签来定义 map 的键和结构体字段之间的映射关系。
本段引用自 https://learnku.com/articles/78000#5ed13e
validator
参考此文:
https://liuqh.icu/2021/05/30/go/gin/11-validate/
Gorm
参考官方文档:
https://gorm.io/zh_CN/docs/models.html
Json
常用的有:字段命名、omitempty 选项、“-”选项。
字段命名: 标签可以指定该字段在 json 中的键名。例如,虽然结构体中的字段名是 Name(首字母大写),但在 json 中,对应的键名却是 name(全部小写)。
omitempty 选项: 这个选项可以控制如果字段的值为空(零值),那么在编码为 json 时,这个字段是否会被忽略。例如,Age 字段的标签是 json:“age,omitempty”,这表示如果 Age 的值是 0(int 类型的零值),那么在编码为 json 时,“age” 键将不会出现。
“-“选项: 如果你不想让某个字段在 json 中出现,你可以使用 - 选项。例如,如果你将 Email 字段的标签改为 json:“-”,那么无论 Email 的值是什么,在编码为 json 时,“email” 键都不会出现。
参考此文:
https://fivezh.github.io/2022/02/01/golang-json-tag/