我一直在try 了解如何使用MGO(MongoDB Driver For Go),我遇到了这个struct声明:

type Something struct {
    Id bson.ObjectId "_id,omitempty"
    Name string
}

我不太理解第一个元素(ID)的语法.我知道它被声明为类型bson.ObjectId,但是字符串文字在那里做什么呢?

我的问题不是关于MGO驱动程序功能,
但是关于这个奇怪的<name> <type> <string_literal>语法.

我在旅途中找不到任何东西,我也不知道怎么用谷歌搜索.

推荐答案

它在language specification的第Struct types节中解释过:

字段声明后可以跟一个可选的字符串文字 tag,它成为相应字段声明中所有字段的属性.标记通过 reflection interface,但在其他情况下会被忽略.

// A struct corresponding to the TimeStamp protocol buffer.
// The tag strings define the protocol buffer field numbers.
struct {
    microsec  uint64 "field 1"
    serverIP6 uint64 "field 2"
    process   string "field 3"
}

Go相关问答推荐

Go:嵌入类型不能是类型参数""

golang 的通用 map 功能

GORM没有从 struct 创建完整的表,如何修复?

如何给杜松子wine 的路由加上一个名字,比如Laravel ?

Golang String

GORM:一个表的两个外键

可以';t从主机连接到ScyllaDB容器

Golang Gorm Fiber / argon2.Config 未定义

为什么标准库中的 IsSorted 会反向迭代切片?

如何在golang中使用viper获取对象的配置数组?

最长连续重复的字符golang

如何使用 go-git 将特定分支推送到远程

速率限制特定端点

每次有人进入我的网站时如何运行特定功能?

转到文本/模板模板:如何根据模板本身的值数组判断值?

具有近似约束的函数值导致的实例化失败

如何在 Windows 上使用 cgo 为 386 arch 构建 lib?

在 VSCode 中使用命令行参数调试 Go 测试

try 创建新的 etcdv3 客户端时出现pc error: code = Unavailable desc = error reading from server: EOF

如何在 Prometheus 中正确检测区域和环境信息?