Pregunta ¿Cuál es el uso de backtick en la definición de las estructuras de golang? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

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

Estoy bastante confundido cuál es la función de los contenidos en backtick, como json:"gateway".

¿Es solo un comentario, como //this is the gateway?


75
2018-06-06 09:15


origen


Respuestas:


Puede agregar metainformación adicional a las estructuras Ir en forma de etiquetas. Aquí hay algunos ejemplos de casos de uso.

En este caso, el json:"gateway" es utilizado por el paquete json para codificar el valor de Gateway en la llave gateway en el objeto json correspondiente.

Ejemplo:

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

42
2018-06-06 09:23



Son etiquetas:

Una declaración de campo puede ser seguida por una etiqueta literal de cadena opcional,   que se convierte en un atributo para todos los campos en el correspondiente   declaración de campo Las etiquetas se hacen visibles a través de un reflejo   interfaz y tomar parte en la identidad de tipo para las estructuras, pero de lo contrario   ignorado

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

Ver esta pregunta y respuesta para una explicación y respuesta más detallada.

los citas posteriores se utilizan para crear literales de cadena sin procesar que pueden contener cualquier tipo de carácter:

Los literales de cadena sin procesar son secuencias de caracteres entre comillas posteriores ``.   Dentro de las comillas, cualquier personaje es legal, excepto las comillas.


49
2018-06-06 09:23