freeCodeCamp/guide/portuguese/go/methods/index.md

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 

Mais Informações:

https://tour.golang.org/methods/1