Menu
CoddyTech

Definir una interfaz

Parte de la sección Lógica y Flujo del Journey de GO de Coddy. Lección 13 de 68.

Ahora que entiendes conceptualmente qué son las interfaces, aprendamos a definir una en Go. Una interfaz se define usando la palabra clave interface, seguida de un conjunto de firmas de métodos entre llaves.

Esta es la sintaxis básica para definir una interfaz:

type InterfaceName interface {
    MethodName() ReturnType
    AnotherMethod(parameter Type) ReturnType
}

Observa que una interfaz solo contiene firmas de métodos (el nombre del método, los parámetros y los tipos de retorno), pero no contiene ninguna implementación. La interfaz no especifica cómo deben funcionar estos métodos, solo qué métodos deben existir.

Por ejemplo, así definirías una interfaz sencilla Shaper que requiere que cualquier tipo que la implemente tenga un método Area:

type Shaper interface {
    Area() float64
}

Esta interfaz establece un contrato: cualquier tipo que quiera considerarse un Shaper debe tener un método Area que no reciba parámetros y devuelva un float64. A la interfaz no le importa cuál sea el tipo ni cómo calcule el área; solo le importa que el método exista con la firma correcta.

challenge icon

Desafío

Fácil

En este desafío, practicarás cómo definir interfaces en Go creando un sistema sencillo de reproductor multimedia. Definirás una interfaz que establece un contrato para diferentes tipos de dispositivos multimedia.

Recibirás una entrada:

  • Una cadena que representa una acción multimedia (por ejemplo, "play", "pause" o "stop")

Tu tarea es:

  1. Definir una interfaz llamada MediaPlayer con tres firmas de métodos:
    • Play() que devuelve una cadena
    • Pause() que devuelve una cadena
    • Stop() que devuelve una cadena
  2. Según la acción de entrada, imprimir la firma del método correspondiente de tu interfaz MediaPlayer con el formato: "MediaPlayer interface requires: [MethodName]() string"

Este programa todavía no usa MediaPlayer, y eso está bien: Go compila una interfaz incluso cuando ningún tipo la implementa. Las instrucciones de impresión simplemente informan la firma del método que tu interfaz requiere para la acción dada. En la siguiente lección crearás un tipo que implemente MediaPlayer y llamarás a sus métodos.

Los nombres de los métodos deben escribirse con mayúscula inicial (ser exportados), ya que forman parte de una definición de interfaz. Para la entrada "play", imprime "MediaPlayer interface requires: Play() string"; para "pause", imprime "MediaPlayer interface requires: Pause() string"; y para "stop", imprime "MediaPlayer interface requires: Stop() string".

Este desafío se centra en el concepto fundamental de definir interfaces con firmas de métodos, estableciendo el contrato que cualquier tipo que las implemente debe cumplir.

Pruébalo tú mismo

package main

import "fmt"

func main() {
    // Lee la entrada
    var action string
    fmt.Scanln(&action)
    
    // TODO: Define aquí tu interfaz MediaPlayer
    
    // TODO: Escribe tu código a continuación para gestionar la acción e imprimir la salida requerida
    
    // Imprime el resultado
    // Recuerda imprimir con el formato: "MediaPlayer interface requires: [MethodName]() string"
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Go online