1.3 KiB
1.3 KiB
title | localeTitle |
---|---|
Go Methods | Ir metodos |
Ir metodos
Los tipos de golang pueden tener métodos. Un método es una función con un argumento especial, el receptor .
type Rectangle struct {
height, width int64
}
func (r Receiver) getArea() int64 {
return r.height * r.height
}
r := Rectangle{10, 20}
r.getArea() // 200
Aquí, el tipo Rectangle
tiene un método llamado getArea
que devuelve el área del rectángulo. El receptor aquí es r
.
Este código es equivalente a:
type Rectangle struct {
height, width int64
}
func getArea(r Receiver) int 64{
return r.height * r.height
}
r := Rectangle{10, 20}
getArea(r) // 200
Ahora el método getArea recibe r
como un argumento, en lugar de un receptor. La funcionalidad es equivalente.
Puntero receptor
Puede pasar un puntero como receptor:
type MyInt int64
func (m *MyInt) setToZero() {
*m = MyInt(0)
}
m := MyInt(10)
m.setToZero() // m == 0
Metodos de extension
Si desea crear un método en un tipo definido en otro paquete, por ejemplo, int
puede usar un envoltorio simple como este:
type MyInt int64
func (m MyInt) add10() int64 {
return m + 10
}
m := MyInt(10)
m.add10() // 20