Menu
Coddy logo textTech

Definición de métodos en structs

Parte de la sección Programación Orientada a Objetos del Journey de GO de Coddy. Lección 7 de 107.

Los métodos en Go son funciones con un argumento receiver especial que asocia la función con un tipo de estructura.

Sintaxis de método

func (receiverName StructType) MethodName() ReturnType {
    // cuerpo del método
}

Define una estructura con métodos

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func (r Rectangle) Perimeter() float64 {
    return 2 * (r.Width + r.Height)
}

Métodos con parámetros

func (r Rectangle) Scale(factor float64) float64 {
    return r.Area() * factor
}

Llamar a métodos

rect := Rectangle{Width: 5, Height: 3}
fmt.Println(rect.Area())      // Salida: 15
fmt.Println(rect.Perimeter()) // Salida: 16
fmt.Println(rect.Scale(2))    // Salida: 30

El receptor (r Rectangle) te permite acceder a los campos de struct dentro del método usando la variable receptora r. Los métodos pueden llamar a otros métodos en el mismo struct.

challenge icon

Desafío

Intermedio

Añade tres métodos a la estructura Circle:

  • Area: devuelve math.Pi * radius * radius
  • Circumference: devuelve 2 * math.Pi * radius
  • Describe: devuelve una cadena: "Circle with radius X.XX"

Pruébalo tú mismo

package main

import "fmt"

func main() {
    var radius float64
    fmt.Scan(&radius)

    c := Circle{Radius: radius}

    fmt.Printf("Area: %.2f\n", c.Area())
    fmt.Printf("Circumference: %.2f\n", c.Circumference())
    fmt.Printf("Description: %s\n", c.Describe())
}
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

Practica por tu cuenta: Compilador de Go online