Métodos en Golang

Los métodos en Golang  son como funciones pero con una diferencia importante: tienen un argumento receptor , que permite el acceso a las propiedades del receptor . El receptor puede ser de tipo struct o no struct, pero ambos deben estar en el mismo paquete. No es posible crear métodos para tipos definidos en otros paquetes, incluidos tipos integrados como int o string ; De lo contrario, el compilador informará un error.

Métodos en Golang

Por ejemplo:

package main

import "fmt"

// Định nghĩa một struct
type person struct {
    name string
    age  int
}

// Định nghĩa một phương thức với struct receiver
func (p person) display() {
    fmt.Println("Name:", p.name)
    fmt.Println("Age:", p.age)
}

func main() {
    // Tạo một phiên bản của struct
    a := person{name: "a", age: 25}
    
    // Gọi phương thức
    a.display()
}

Resultado:

Name: a
Age: 25

Sintaxis

func(receiver_name Type)  method_name(parameter_list) (return_type) { 
// Code
}

Receptor: Se puede acceder mediante este método.

Método con receptor de tipo estructura

En Go, puedes definir un método donde el receptor sea de tipo estructura. El receptor es accesible dentro del método. El ejemplo anterior ilustra este enfoque con un receptor de tipo estructura.

El método con receptor no es de tipo estructura

Go también permite que los métodos tengan receptores que no sean estructuras, siempre que el tipo de receptor y la definición del método estén en el mismo paquete. No se puede definir un método con un tipo de receptor de otro paquete (por ejemplo, int, string).

Por ejemplo:

package main

import "fmt"

// Tạo một kiểu tùy biến dựa trên int
type number int

// Định nghĩa một phương thức với receiver không phải struct
func (n number) square() number {
    return n * n
}

func main() {
    a := number(4)
    b := a.square()

    fmt.Println("Square of", a, "is", b)
}

Resultado:

Square of 4 is 16

Método con puntero receptor

En Go, los métodos pueden tener receptores de punteros. Esto permite que los cambios realizados en el método se reflejen en el llamador, lo que no es posible con receptores de valores.

Sintaxis:

func (p *Type) method_name(...Type) Type {    // Code}

Por ejemplo:

package main

import "fmt"

// Defining a struct
type person struct {
    name string
}

// Phương thức với receiver pointer để chỉnh sửa dữ liệu
func (p *person) changeName(newName string) {
    p.name = newName
}

func main() {
    a := person{name: "a"}
    
    fmt.Println("Before:", a.name)
    
    // Gọi phương thức này để thay đổi tên
    a.changeName("b")
    
    fmt.Println("After:", a.name)
}

Resultado:

Before: a
After: b

El método acepta tanto puntero como valor

A diferencia de las funciones, los métodos Go pueden aceptar receptores tanto de valores como de punteros. Puede pasar punteros o valores y el método los manejará en consecuencia.

Por ejemplo:

package main
import "fmt"

type person struct {
    name string
}
// Phương thức với receiver pointer
func (p *person) updateName(newName string) {
    p.name = newName
}

// Phương thức với receiver value 
func (p person) showName() {
    fmt.Println("Name:", p.name)
}

func main() {
    a := person{name: "a"}
    
    // Gọi phương thức con trỏ cùng giá trị
    a.updateName("b")
    fmt.Println("After pointer method:", a.name)
    
    // Gọi phương thức giá trị với con trỏ
    (&a).showName()
}

Resultado:

After pointer method: b
Name: b

Diferencia entre método y función

Método Mandíbula
Contiene un receptor No contiene receptor
Es posible definir métodos con el mismo nombre pero diferentes tipos. No se permiten funciones con el mismo nombre pero de diferentes tipos.
No se puede utilizar como superlativo. Se pueden utilizar como objetos superordinados.

Dejar un comentario

Cómo tirar un ordenador en Bilbao: dónde llevarlo y qué hacer con tus datos

Cómo tirar un ordenador en Bilbao: dónde llevarlo y qué hacer con tus datos

¿Tienes un ordenador viejo en Bilbao? Descubre dónde entregarlo, cuándo puede recogerlo una tienda, cómo proteger tus datos y qué opción conviene si aún funciona.

Cómo tirar un frigorífico en Almería: opciones seguras y pasos

Cómo tirar un frigorífico en Almería: opciones seguras y pasos

Descubre cómo tirar un frigorífico en Almería: Punto Limpio, retirada 1x1 al comprar otro, preparación, transporte y errores que debes evitar.

ITV desfavorable: cuánto tiempo tienes para reparar el coche y volver a inspección

ITV desfavorable: cuánto tiempo tienes para reparar el coche y volver a inspección

Si la ITV sale desfavorable, el plazo máximo para reparar y volver es de dos meses. Te explicamos qué puedes hacer mientras tanto y qué ocurre si te retrasas.

Cómo tirar un edredón en Terrassa

Cómo tirar un edredón en Terrassa

¿Dónde tirar un edredón en Terrassa? Descubre por qué no va al contenedor naranja y cómo consultar el punto limpio adecuado.

Cómo tirar un frigorífico en Elche: opciones, costes y qué conviene comprobar

Cómo tirar un frigorífico en Elche: opciones, costes y qué conviene comprobar

Descubre cómo tirar un frigorífico en Elche: ecoparque, recogida de voluminosos o entrega al vendedor, con ventajas, límites y consejos prácticos.

Cómo tirar una bombona de gas en Málaga: devolución segura, fugas y punto limpio

Cómo tirar una bombona de gas en Málaga: devolución segura, fugas y punto limpio

Guía práctica para deshacerse de una bombona de butano o propano en Málaga: devolución al proveedor, qué hacer si tiene gas o fuga y cuándo consultar el punto limpio.

Cómo tirar una lavadora en Alcalá de Henares: recogida, Punto Limpio y alternativas

Cómo tirar una lavadora en Alcalá de Henares: recogida, Punto Limpio y alternativas

Guía actualizada para deshacerse de una lavadora en Alcalá de Henares: recogida municipal gratuita, Punto Limpio y retirada al comprar una nueva.

Cómo tirar una batería de litio en Madrid: puntos limpios y precauciones

Cómo tirar una batería de litio en Madrid: puntos limpios y precauciones

Descubre cómo tirar una batería de litio en Madrid: qué punto limpio elegir, cómo transportar una batería intacta y qué hacer si está hinchada o es de un vehículo eléctrico.

Cómo tirar un edredón en Barcelona: opciones y errores que debes evitar

Cómo tirar un edredón en Barcelona: opciones y errores que debes evitar

Descubre cómo tirar un edredón en Barcelona: donación, recogida textil, Puntos Verdes y qué hacer si está húmedo, roto o contaminado.

Cómo tirar un sofá en Terrassa sin dejarlo mal: recogida, deixalleria y señales de que lo has hecho bien

Cómo tirar un sofá en Terrassa sin dejarlo mal: recogida, deixalleria y señales de que lo has hecho bien

Cómo tirar un sofá en Terrassa: cuándo llamar a Eco-Equip, cómo dejarlo para la recogida, cuándo usar Can Barba o Can Casanovas y qué errores evitar.