Inserción de structs
Componga structs
Inserción de structs es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
Componga estructuras
Go no tiene herencia de clases. En su lugar, ofrece la incrustación: coloque una estructura dentro de otra sin nombre de campo para reutilizar sus campos y métodos.
Campos anónimos
Un campo incrustado se declara solo mediante su tipo, sin nombre. Sus miembros se promocionan a la estructura externa.
package main
import "fmt"
type Engine struct{ Power int }
type Car struct {
Engine
Brand string
}
func main() {
c := Car{Engine: Engine{Power: 150}, Brand: "Coddy"}
fmt.Println(c.Power, c.Brand)
}Acceder a campos promocionados
Puede leer c.Power directamente aunque Power pertenezca a la Engine incrustada. Esto se denomina promoción de campos.
La ruta completa sigue funcionando
Siempre puede acceder explícitamente a la estructura incrustada mediante su nombre de tipo.
package main
import "fmt"
type Engine struct{ Power int }
type Car struct{ Engine }
func main() {
c := Car{Engine{200}}
fmt.Println(c.Engine.Power)
fmt.Println(c.Power)
}Incrustación frente a un campo con nombre
Un campo con nombre (engine Engine) requiere c.engine.Power. La incrustación (Engine) promociona los miembros, por lo que puede escribir c.Power. La incrustación expresa una relación de es un tipo de.
Inicializar estructuras incrustadas
Use el nombre del tipo como clave del campo en un literal compuesto.
package main
import "fmt"
type Address struct{ City string }
type User struct {
Address
Name string
}
func main() {
u := User{Address: Address{City: "Istanbul"}, Name: "Mert"}
fmt.Println(u.Name, "in", u.City)
}Varias incrustaciones
Una estructura puede incrustar varios tipos y combinar sus campos.
package main
import "fmt"
type Timestamps struct{ Created string }
type Author struct{ Name string }
type Post struct {
Timestamps
Author
Title string
}
func main() {
p := Post{Timestamps{"today"}, Author{"Ada"}, "Hello"}
fmt.Println(p.Title, p.Name, p.Created)
}Colisiones de nombres
Si dos tipos incrustados comparten un nombre de campo, la referencia ambigua provoca un error de compilación; debe calificarla con el nombre del tipo para desambiguarla.
Ocultación por la estructura externa
Un campo declarado en la estructura externa oculta otro promocionado con el mismo nombre. El campo externo tiene prioridad en el acceso no calificado.
package main
import "fmt"
type Base struct{ ID int }
type Item struct {
Base
ID int
}
func main() {
i := Item{Base{1}, 99}
fmt.Println(i.ID, i.Base.ID)
}Incrustación de punteros
Puede incrustar un tipo puntero. Sus miembros siguen promocionándose, pero debe inicializar el puntero o correrá el riesgo de desreferenciar nil.
package main
import "fmt"
type Logger struct{ Prefix string }
type Service struct{ *Logger }
func main() {
s := Service{Logger: &Logger{Prefix: "[svc]"}}
fmt.Println(s.Prefix)
}Cuándo incrustar
- Reutilizar campos comunes (marcas de tiempo e identificadores)
- Crear tipos más completos a partir de otros más pequeños
- Evitar anidamientos profundos y rutas de acceso demasiado extensas
Comprobación rápida
Compruebe sus conocimientos sobre la incrustación de estructuras.
Resumen
Ha aprendido la incrustación de estructuras.
- Los campos anónimos promocionan miembros a la estructura externa
- Acceda mediante
c.Poweroc.Engine.Power - Los campos externos ocultan los promocionados
- Las colisiones requieren una calificación explícita
- La incrustación de punteros también funciona
Preguntas frecuentes
¿La lección «Inserción de structs» es gratis?
Sí — el texto completo de «Inserción de structs» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Inserción de structs»?
Componga structs Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Inserción de structs»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Inserción de structs
- Inserción de interfaces
- Promoción de métodos
- Composición frente a herencia