Menu
Coddy logo textTech

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 realmente una en Go. Una interfaz se define usando la palabra clave interface seguida de un conjunto de firmas de métodos encerradas 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 la 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 Shaper simple 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 acepte 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 la definición de 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étodo:
    • 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 de método correspondiente de tu interfaz MediaPlayer con el formato: "MediaPlayer interface requires: [MethodName]() string"

La instrucción de impresión está destinada a reflejar la interfaz que definiste anteriormente. Estás describiendo qué firma de método requiere la interfaz MediaPlayer para la acción indicada. Piensa en ello como si tu programa inspeccionara e informara sobre su propio contrato de interfaz.

Los nombres de los métodos deben escribirse con mayúscula inicial (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étodo, estableciendo el contrato que cualquier tipo que las implemente debe cumplir.

Pruébalo tú mismo

package main

import "fmt"

func main() {
    // Leer la entrada
    var action string
    fmt.Scanln(&action)
    
    // TODO: Define your MediaPlayer interface here
    
    // TODO: Escribe tu código a continuación para manejar la acción e imprimir la salida requerida
    
    // Imprimir el resultado
    // Remember to print in format: "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