Structs e interfaces
Go Methods: Value and Pointer Receivers
Go has no classes. Attach methods to a type and choose the right receiver.
Lo que aprenderás
- Methods and receivers
- Value vs pointer receiver
- Constructor functions
Receiver → what the method can do
func (r Rectangle) Area()read a copyfunc (r *Rectangle) Scale(f)change the originalA function with a receiver
A method is a function with a receiver: the value it is called on, written before the method name. Go has no classes, so methods on structs are how types get behavior.
Area has a value receiver and works on a copy, which is fine for reading. Scale has a pointer receiver, so it changes the original rectangle. Go takes the address for you when you call rect.Scale(2). NewSquare is an ordinary function used as a constructor.
Puntos clave
- A value receiver works on a copy.
- A pointer receiver can change the original.
- NewSquare is a normal function used as a constructor.
Ejemplo ejecutable de Go
main.go
package main
import "fmt"
type Rectangle struct {
Width, Height float64
}
func NewSquare(size float64) Rectangle {
return Rectangle{Width: size, Height: size}
}
// Area has a value receiver: it only reads the rectangle.
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
// Scale has a pointer receiver: it changes the rectangle.
func (r *Rectangle) Scale(factor float64) {
r.Width *= factor
r.Height *= factor
}
func main() {
rect := Rectangle{Width: 3, Height: 4}
fmt.Println("area:", rect.Area())
rect.Scale(2)
fmt.Println("scaled:", rect.Width, "x", rect.Height, "=", rect.Area())
fmt.Println("square:", NewSquare(5).Area())
}
area: 12
scaled: 6 x 8 = 48
square: 25Practica
Abre el ejemplo en el compilador online, cambia un valor o añade una línea y predice la salida antes de ejecutarlo. Después rompe el código a propósito y lee el mensaje del compilador.
¿Terminaste esta lección?
Márcala como aprendida para seguir tu progreso.
Tu progreso está guardado en este navegador Inicia sesión para conservarlo en todos tus dispositivos.
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
- Reglas de una cuenta bancaria Protege el saldo de una cuenta con reglas de depósito y retiro, rechazando operaciones inválidas. Fácil
- Distance Between Points Compute the straight-line distance between two points. Fácil