0Pricing
Go Academy · Lección

Inserción de interfaces

Componga interfaces

Inserción de interfaces es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 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 interfaces

Las interfaces pueden incrustar otras interfaces y combinar sus conjuntos de métodos en un contrato más amplio. La biblioteca estándar utiliza este mecanismo en todas partes.

Sintaxis de incrustación

Enumere un tipo de interfaz dentro de otra para incluir todos sus métodos.

package main

import "fmt"

type Reader interface{ Read() string }
type Writer interface{ Write(s string) }
type ReadWriter interface {
	Reader
	Writer
}

func main() {
	var rw ReadWriter
	fmt.Println(rw == nil)
}

io.ReadWriter en la práctica

El ejemplo clásico es io.ReadWriter, definido mediante la incrustación de io.Reader y io.Writer. Cualquier tipo que tenga ambos métodos lo satisface.

Satisfacer una interfaz compuesta

Un tipo concreto implementa la interfaz combinada simplemente al tener todos los métodos requeridos.

package main

import "fmt"

type Reader interface{ Read() string }
type Writer interface{ Write(s string) }
type ReadWriter interface {
	Reader
	Writer
}

type File struct{ data string }

func (f *File) Read() string  { return f.data }
func (f *File) Write(s string) { f.data = s }

func main() {
	var rw ReadWriter = &File{}
	rw.Write("hi")
	fmt.Println(rw.Read())
}

Por qué componer interfaces

Las interfaces pequeñas son fáciles de implementar y probar. Componerlas permite crear contratos más amplios solo donde se necesitan, manteniendo cada pieza mínima.

Crear a partir de piezas pequeñas

Defina interfaces específicas de un solo método y, después, combínelas.

package main

import "fmt"

type Opener interface{ Open() }
type Closer interface{ Close() }
type OpenCloser interface {
	Opener
	Closer
}

type Door struct{}

func (Door) Open()  { fmt.Println("opened") }
func (Door) Close() { fmt.Println("closed") }

func main() {
	var oc OpenCloser = Door{}
	oc.Open()
	oc.Close()
}

Sin métodos duplicados

Las interfaces incrustadas no deben aportar métodos superpuestos con firmas incompatibles; los conjuntos de métodos idénticos no presentan problemas en las versiones modernas de Go.

Aceptar interfaces pequeñas

Las funciones deben solicitar la interfaz más pequeña que necesiten. Reciba io.Reader, no io.ReadWriteCloser, si solo va a leer.

package main

import "fmt"

type Reader interface{ Read() string }

func dump(r Reader) { fmt.Println(r.Read()) }

type Buf struct{}

func (Buf) Read() string { return "data" }

func main() {
	dump(Buf{})
}

La familia de io

La biblioteca estándar compone Reader, Writer y Closer en ReadCloser, WriteCloser y ReadWriteCloser: una retícula clara de contratos.

Interfaces compuestas en las API

Devuelva la interfaz más amplia que admita un valor, pero acepte la más pequeña que utilice su función. Así maximizará tanto la flexibilidad como la claridad.

Incrustación de interfaces frente a estructuras

  • La incrustación de estructuras promociona campos y métodos para reutilizar el comportamiento
  • La incrustación de interfaces combina requisitos de métodos en un contrato más amplio

Comprobación rápida

Compruebe sus conocimientos sobre la incrustación de interfaces.

Resumen

Ha aprendido la incrustación de interfaces.

  • Enumere interfaces dentro de otra para fusionar conjuntos de métodos
  • El paquete io compone Reader, Writer y Closer
  • Mantenga pequeñas las interfaces base y compóngalas cuando sea necesario
  • Acepte la interfaz más pequeña que requiera una función

Preguntas frecuentes

¿La lección «Inserción de interfaces» es gratis?

Sí — el texto completo de «Inserción de interfaces» 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 interfaces»?

Componga interfaces 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 2 de 4.

¿Cuánto tiempo toma la lección «Inserción de interfaces»?

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

  1. Inserción de structs
  2. Inserción de interfaces
  3. Promoción de métodos
  4. Composición frente a herencia
← Volver a Go Academy