Structs
Al leer esta página, deberías poder entender:
- Cómo crear estructuras.
- Cómo se modifican los datos.
- Cómo usar los tags.
Definición
Un struct es un tipo de dato que agrupa varios campos bajo un mismo nombre. Sirve para representar “cosas” con propiedades.
| |
Para usar el struct hay varias formas. En el siguiente caso vamos a declarar una variable llamada p del tipo Persona y posteriormente le asignamos valores:
| |
También puedes declararla con valores:
| |
También puedes usar la función new para que te retorne el puntero de *Persona quedando p := new(Persona) y es equivalente a p := &Persona{}. Por ejemplo, si queremos retornar un struct con valores por defecto hacemos:
| |
Métodos
Puedes asociar funciones al struct y eso se llaman métodos, la diferencia está en el receiver, que es ese parámetro especial antes del nombre del método:
| |
Ese (p Persona) significa que éste método Saludar() pertenece al tipo Persona.
También puedes usar puntero si el método necesita modificar el struct:
| |
Note
Si el tipo es un
mapo unsliceesto no funciona. Se usa(*p).y se llama desreferenciar un puntero.
Para acceder al método lo llamas de la siguiente forma:
| |
No puedes acceder al metodo sino inicias primero la variable.
Tags
Los struct pueden tener tags, que son pequeños metadatos escritos junto a los campos. Técnicamente los tags no cambian la estructura del struct, más bien le dan instrucciones a otras herramientas sobre cómo interpretar sus campos.
| |
Si usas librerías como la de JSON entre otras, puede que tengan opciones adicionales para los tags. Por ejemplo, para el caso de la librería JSON existen estas opciones que son bastante comunes:
json:"name"cambia el nombre del campo en JSON.omitemptyomite el campo si está vacío."-"ignora el campo.