Подтвердить что ты не робот

Каково использование обратного хода в определении golang structs?

type NetworkInterface struct {
    Gateway              string `json:"gateway"`
    IPAddress            string `json:"ip"`
    IPPrefixLen          int    `json:"ip_prefix_len"`
    MacAddress           string `json:"mac"`
    ...
}

Я довольно смущен, что функция содержимого в backtick, например json:"gateway".

Это просто комментарий, например //this is the gateway?

4b9b3361

Ответ 1

Вы можете добавить дополнительную метаинформацию в структуры Go в виде тегов. Вот несколько примеров использования.

В этом случае json:"gateway" используется json package для кодирования значения Gateway в ключе Gateway в соответствующем json-объекте.

Пример:

n := NetworkInterface{
   Gateway : "foo"
}
json.Marshal(n)
// will output `{"gateway":"foo",...}`

Ответ 2

Они теги:

За объявлением поля может следовать необязательный тег строкового литерала, который становится атрибутом для всех полей соответствующего полевая декларация. Теги становятся видимыми через отражение интерфейс и принять участие в идентификации типов для структур, но в противном случае игнорируются.

// 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"
}

См. этот вопрос и ответ для более подробного объяснения и ответа.

обратные кавычки используются для создания исходных строковых литералов, которые могут содержать любой тип символа:

Строковые литералы строки представляют собой последовательности символов между обратными кавычками ``. В кавычках любой символ является законным, кроме обратной цитаты.