1.3 KiB
1.3 KiB
title | localeTitle |
---|---|
Go Methods | Vá métodos |
Vá métodos
Tipos de Golang podem ter métodos. Um método é uma função com um argumento especial, o receptor .
type Rectangle struct {
height, width int64
}
func (r Receiver) getArea() int64 {
return r.height * r.height
}
r := Rectangle{10, 20}
r.getArea() // 200
Aqui, o tipo Rectangle
tem um método chamado getArea
que retorna a área do retângulo. O receptor aqui é r
.
Este código é 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
Agora, o método getArea recebe r
como um argumento, em vez de um receptor. A funcionalidade é equivalente.
Receptor de ponteiro
Você pode passar um ponteiro como um receptor:
type MyInt int64
func (m *MyInt) setToZero() {
*m = MyInt(0)
}
m := MyInt(10)
m.setToZero() // m == 0
Métodos de extensão
Se você quiser criar um método em um tipo definido em outro pacote, por exemplo, int
você pode usar um simples invólucro como este:
type MyInt int64
func (m MyInt) add10() int64 {
return m + 10
}
m := MyInt(10)
m.add10() // 20