”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么我不能在 Go Struct 标签中使用变量?

为什么我不能在 Go Struct 标签中使用变量?

发布于2024-11-05
浏览:295

Why Can\'t I Use Variables in Go Struct Tags?

在 Go 结构体标签中使用变量

在 Go 中,结构体标签用于指定有关结构体中字段的元数据。虽然可以使用字符串文字定义标签,但尝试在其位置使用变量会导致错误。

无效用法:

const (
    TYPE = "type"
)

type Shape struct {
    Type string fmt.Sprintf("json:\"%s\"", TYPE)
}

此代码将引发语法错误,因为它尝试使用 fmt.Sprintf 语句动态生成标记值。 Go 要求 struct 标签是编译时字符串文字。

有效用法:

type Shape struct {
    Type string `json:"type"`
}

在此示例中,标记被定义为字符串文字。这是指定结构体标记的正确方法。

解释:

有效示例和无效示例之间的主要区别在于评估时间。字符串文字在编译时计算,而 fmt.Sprintf 语句在运行时计算。各种 Go 工具(例如 JSON 编码器和解码器)在编译期间使用结构标签。这些工具需要在编译时知道标签值,以便正确生成必要的代码。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3