Menu
Coddy logo textTech

Introducción a la POO en Go

Parte de la sección Programación Orientada a Objetos del Journey de GO de Coddy — lección 5 de 107.

Go no tiene clases, pero logra la programación orientada a objetos a través de structs y métodos. Un struct agrupa datos relacionados, y los métodos definen el comportamiento asociado a ese struct.

Define una estructura para contener datos

type Dog struct {
    Name string
    Age  int
}

Adjunta un método a la estructura

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

Crea una instancia y úsala

package main

import "fmt"

type Dog struct {
    Name string
    Age  int
}

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

func main() {
    myDog := Dog{Name: "Buddy", Age: 3}
    fmt.Println(myDog.Bark()) // Salida: Buddy says Woof!
    fmt.Println(myDog.Age)    // Salida: 3
}

En Go, la parte (d Dog) antes del nombre del método se llama un receptor. Conecta el método a la estructura Dog, de manera similar a cómo los métodos pertenecen a las clases en otros lenguajes.

challenge icon

Desafío

Fácil

Crea una estructura Cat con un método para practicar el enfoque de Go hacia la OOP:

  • Define una estructura Cat con los campos Name (string) y Age (int)
  • Añade un método Speak que devuelva el nombre del gato seguido de " says Meow!"

Hoja de referencia

Go logra la programación orientada a objetos a través de structs y métodos. Un struct agrupa datos relacionados, y los métodos definen el comportamiento asociado a ese struct.

Define un struct para contener datos:

type Dog struct {
    Name string
    Age  int
}

Adjunta un método al struct usando un receptor (receiver):

func (d Dog) Bark() string {
    return d.Name + " says Woof!"
}

La parte (d Dog) antes del nombre del método es el receptor, que conecta el método al struct.

Crea una instancia y úsala:

myDog := Dog{Name: "Buddy", Age: 3}
fmt.Println(myDog.Bark()) // Salida: Buddy says Woof!
fmt.Println(myDog.Age)    // Salida: 3

Pruébalo tú mismo

package main

import "fmt"

func main() {
    var name string
    var age int
    fmt.Scan(&name, &age)

    cat := Cat{Name: name, Age: age}

    fmt.Printf("Name: %s\n", cat.Name)
    fmt.Printf("Age: %d\n", cat.Age)
    fmt.Println(cat.Speak())
}
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 Programación Orientada a Objetos