Métodos em Golang

Métodos em Golang  são como funções, mas com uma grande diferença: eles têm um argumento receiver , que permite acesso às propriedades do receiver . O receptor pode ser do tipo struct ou não struct, mas ambos devem estar no mesmo pacote. Não é possível criar métodos para tipos definidos em outros pacotes, incluindo tipos internos como int ou string ; Caso contrário, o compilador reportará um erro.

Métodos em Golang

Por exemplo:

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

Sintaxe

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

Receptor: Pode ser acessado usando este método.

Método com Receptor do tipo struct

Em Go, você pode definir um método em que o receptor é do tipo struct. O receptor é acessível dentro do método. O exemplo anterior ilustra essa abordagem com um Receptor do tipo struct.

Método com Receptor não é do tipo struct

Go também permite que métodos tenham receptores não-struct, desde que o tipo de receptor e a definição do método estejam no mesmo pacote. Você não pode definir um método com um tipo de receptor de outro pacote (por exemplo, int, string).

Por exemplo:

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 com ponteiro receptor

Em Go, os métodos podem ter receptores de ponteiros. Isso permite que as alterações feitas no método sejam refletidas no chamador, o que não é possível com receptores de valor.

Sintaxe:

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

Por exemplo:

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

O método aceita ponteiro e valor

Ao contrário das funções, os métodos Go podem aceitar receptores de valor e ponteiros. Você pode passar ponteiros ou valores e o método tratará adequadamente.

Por exemplo:

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

Diferença entre método e função

Método Mandíbula
Contém um receptor Não contém receptor
É possível definir métodos com o mesmo nome, mas tipos diferentes. Funções com o mesmo nome, mas tipos diferentes, não são permitidas.
Não pode ser usado como superlativo Podem ser usados ​​como objetos superordenados

Deixar um comentário

IPTU em São Bernardo do Campo: como emitir a segunda via e consultar débitos

IPTU em São Bernardo do Campo: como emitir a segunda via e consultar débitos

Veja como emitir a segunda via do IPTU em São Bernardo do Campo, consultar débitos de outros exercícios e pagar uma guia vencida com segurança.

Como descartar máquina de lavar em São Paulo: guia prático

Como descartar máquina de lavar em São Paulo: guia prático

Saiba como descartar máquina de lavar em São Paulo com segurança: Cata-Bagulho, logística reversa, preparação, transporte e erros que devem ser evitados.

Como descartar lâmpadas fluorescentes em Duque de Caxias com segurança

Como descartar lâmpadas fluorescentes em Duque de Caxias com segurança

Saiba onde e como descartar lâmpadas fluorescentes em Duque de Caxias, como acondicioná-las, o que fazer se quebrarem e quais pontos confirmar antes de sair.

Como descartar power bank em Teresina: onde levar e o que fazer com segurança

Como descartar power bank em Teresina: onde levar e o que fazer com segurança

Saiba como descartar power bank em Teresina, inclusive se estiver estufado ou danificado, e como localizar um ponto de logística reversa atualizado.

Como descartar micro-ondas em Campinas: guia prático e seguro

Como descartar micro-ondas em Campinas: guia prático e seguro

Saiba como descartar micro-ondas em Campinas: prepare o aparelho, escolha ecoponto ou logística reversa e evite erros no transporte.

Como descartar power bank em Recife? Veja onde levar e o que fazer com a bateria

Como descartar power bank em Recife? Veja onde levar e o que fazer com a bateria

Saiba como descartar power bank em Recife com segurança: compare EcoEstações, PEVs, lojas e pontos de logística reversa, além dos cuidados com aparelhos estufados ou danificados.

Como descartar micro-ondas em Belém? Guia passo a passo

Como descartar micro-ondas em Belém? Guia passo a passo

Saiba como descartar micro-ondas em Belém: Ecoponto da Sacramenta, Hub do Pix, logística reversa, preparo e erros a evitar.

Como descartar geladeira com segurança: guia de preparação e coleta

Como descartar geladeira com segurança: guia de preparação e coleta

Aprenda como descartar geladeira corretamente: encontre um ponto por CEP, prepare o aparelho, organize o transporte e evite erros comuns.

Como descartar televisão em São Paulo: opções seguras e gratuitas

Como descartar televisão em São Paulo: opções seguras e gratuitas

Saiba como descartar televisão em São Paulo: consulte pontos ABREE, confirme Ecopontos e prepare a TV para transporte e reciclagem.

Como descartar bateria de lítio em Salvador com segurança

Como descartar bateria de lítio em Salvador com segurança

Veja onde descartar bateria de lítio em Salvador, como encontrar pontos Green Eletron e ABREE e o que fazer com baterias inchadas ou danificadas.