保留名称golang的结构体字段

问题描述 投票:0回答:3

嗨,我正在做一个API客户端,我想使用一个struct来提取json,问题是其中一个json字段应该命名为type,据我所知它是一个保留关键字,我该如何创建一个结构体中带有“type”字段?

示例:

我想做的事:

type Card struct {
  cardId  string
  name    string
  cardSet string
  type    string
}
struct go reserved-words
3个回答
35
投票

这不起作用,因为您没有导出字段名称。要在 JSON 输出中使用不同的字段名称,您可以使用结构标签。例如,要在 JSON 输出中命名字段 CardID、Name、CardSet 和 Type,您可以像这样定义结构:

type Card struct {
    CardID  string `json:"cardId"`
    Name    string `json:"name"`
    CardSet string `json:"cardSet"`
    Type    string `json:"type"`
}

json:"<name>"
标签指定要在 JSON 输出中使用的字段名称。


5
投票

您必须在模型上使用 json 注释。此外,必须导出这些字段(大写),否则解组器将无法使用它们。

type Card struct {
  CardId  string `json:"cardId"`
  Name    string `json:"name"`
  CardSet string `json:"cardSet"`
  TheType    string  `json:"type"`
}

0
投票

虽然它在原始问题中肯定是一个未导出的字段,但在将 Cgo 与合法的 C 结构和名为

type
的合法字段一起使用时仍然是一个问题。

它看起来像是非常漂亮的 Golang C 接口中的一个缺陷

© www.soinside.com 2019 - 2024. All rights reserved.