Sobes.tech
Junior — Middle

¿Cómo se definen y utilizan las interfaces en el lenguaje Go?

sobes.tech AI

Respuesta de la IA

En Go, las interfaces se definen como un conjunto de métodos que un tipo debe implementar para considerarse que satisface esa interfaz. La definición de la interfaz se ve así:

// Definición de la interfaz
type Reader interface {
    Read(p []byte) (n int, err error)
}

Un tipo implementa automáticamente la interfaz si tiene todos los métodos especificados en la interfaz. No es necesario indicar explícitamente la implementación de la interfaz.

Ejemplo de uso:

type File struct {}

func (f File) Read(p []byte) (n int, err error) {
    // implementación de lectura
    return 0, nil
}

func process(r Reader) {
    buf := make([]byte, 100)
    r.Read(buf)
}

func main() {
    var f File
    process(f) // File implementa Reader
}

De esta manera, las interfaces en Go permiten escribir código flexible y extensible, basándose en el comportamiento de los tipos, y no en sus implementaciones específicas.