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
Sign up and earn $1000 a day ⋙

Leave a Comment

Os melhores laptops para estudantes em 2025

Os melhores laptops para estudantes em 2025

Os alunos precisam de um tipo específico de laptop para seus estudos. Ele não deve apenas ser potente o suficiente para um bom desempenho na área de estudo escolhida, mas também compacto e leve o suficiente para ser carregado o dia todo.

Como adicionar uma impressora ao Windows 10

Como adicionar uma impressora ao Windows 10

Adicionar uma impressora ao Windows 10 é simples, embora o processo para dispositivos com fio seja diferente do que para dispositivos sem fio.

Como verificar a RAM e verificar erros de RAM no seu computador com a maior taxa de precisão

Como verificar a RAM e verificar erros de RAM no seu computador com a maior taxa de precisão

Como você sabe, a RAM é um componente de hardware muito importante em um computador, atuando como memória para processar dados e é o fator que determina a velocidade de um laptop ou PC. No artigo abaixo, o WebTech360 apresentará algumas maneiras de verificar erros de RAM usando software no Windows.

Diferença entre TV comum e Smart TV

Diferença entre TV comum e Smart TV

As Smart TVs realmente conquistaram o mundo. Com tantos recursos excelentes e conectividade à Internet, a tecnologia mudou a maneira como assistimos TV.

Por que o freezer não tem luz, mas a geladeira tem?

Por que o freezer não tem luz, mas a geladeira tem?

Geladeiras são eletrodomésticos comuns em residências. As geladeiras geralmente têm 2 compartimentos, o compartimento frio é espaçoso e tem uma luz que acende automaticamente toda vez que o usuário o abre, enquanto o compartimento do freezer é estreito e não tem luz.

2 maneiras de corrigir o congestionamento da rede que deixa o Wi-Fi lento

2 maneiras de corrigir o congestionamento da rede que deixa o Wi-Fi lento

As redes Wi-Fi são afetadas por muitos fatores além de roteadores, largura de banda e interferência, mas existem algumas maneiras inteligentes de melhorar sua rede.

Como fazer downgrade do iOS 17 para o iOS 16 sem perder dados usando o Tenorshare Reiboot

Como fazer downgrade do iOS 17 para o iOS 16 sem perder dados usando o Tenorshare Reiboot

Se você quiser voltar para o iOS 16 estável no seu telefone, aqui está o guia básico para desinstalar o iOS 17 e fazer o downgrade do iOS 17 para o 16.

O que acontece com o corpo quando você come iogurte todos os dias?

O que acontece com o corpo quando você come iogurte todos os dias?

Iogurte é um alimento maravilhoso. É bom comer iogurte todos os dias? Quando você come iogurte todos os dias, como seu corpo muda? Vamos descobrir juntos!

Que tipo de arroz é melhor para a saúde?

Que tipo de arroz é melhor para a saúde?

Este artigo discute os tipos de arroz mais nutritivos e como maximizar os benefícios para a saúde de qualquer arroz que você escolher.

Como acordar na hora certa pela manhã

Como acordar na hora certa pela manhã

Estabelecer um horário de sono e uma rotina para dormir, mudar o despertador e ajustar a dieta são algumas das medidas que podem ajudar você a dormir melhor e acordar na hora certa pela manhã.

Dicas para jogar Rent Please! Simulador de Proprietário para Iniciantes

Dicas para jogar Rent Please! Simulador de Proprietário para Iniciantes

Alugue, por favor! Landlord Sim é um jogo de simulação para dispositivos móveis para iOS e Android. Você jogará como proprietário de um complexo de apartamentos e começará a alugar um apartamento com o objetivo de reformar o interior do seu apartamento e deixá-lo pronto para inquilinos.

Últimos códigos de defesa de torre de banheiro e como inseri-los

Últimos códigos de defesa de torre de banheiro e como inseri-los

Obtenha o código do jogo Bathroom Tower Defense Roblox e resgate recompensas emocionantes. Elas ajudarão você a melhorar ou desbloquear torres com maior dano.

Estrutura, símbolos e princípios de funcionamento dos transformadores

Estrutura, símbolos e princípios de funcionamento dos transformadores

Vamos aprender sobre a estrutura, os símbolos e os princípios de operação dos transformadores da maneira mais precisa.

4 maneiras pelas quais a IA está melhorando as Smart TVs

4 maneiras pelas quais a IA está melhorando as Smart TVs

De melhor qualidade de imagem e som a controle de voz e muito mais, esses recursos com tecnologia de IA estão tornando as smart TVs muito melhores!

Por que o ChatGPT é melhor que o DeepSeek

Por que o ChatGPT é melhor que o DeepSeek

Inicialmente, as pessoas tinham grandes esperanças no DeepSeek. Como um chatbot de IA comercializado como um forte concorrente do ChatGPT, ele promete recursos e experiências de bate-papo inteligentes.