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

Como gravar vídeo da tela no Chromebook

Como gravar vídeo da tela no Chromebook

A gravação de tela é um recurso extremamente útil, mas nem todos os sistemas operacionais vêm com esse recurso integrado.

Maneiras de ganhar giros no Coin Master, ganhe giros no Coin Master

Maneiras de ganhar giros no Coin Master, ganhe giros no Coin Master

Não faltam maneiras de ganhar giros no Coin Master, você precisa basicamente trabalhar duro para ter a chance de receber uma série de giros. Quantrimang.com compilou maneiras de ajudar você a ganhar muitas rodadas no Coin Master.

Como criar uma lista de verificação no Google Docs

Como criar uma lista de verificação no Google Docs

Adicionar uma lista de verificação ao Google Docs é uma etapa necessária quando fazemos uma investigação ou levantamento de algum conteúdo.

Por que os Estados Unidos escolhem madeira em vez de concreto para construir casas?

Por que os Estados Unidos escolhem madeira em vez de concreto para construir casas?

Do que são feitas as casas na América? A resposta é madeira. Em vez de cimento, por que as casas americanas são construídas de madeira? Vamos descobrir juntos!

Eventos astronômicos extraordinários em 2025

Eventos astronômicos extraordinários em 2025

O que esperar do mundo do espaço e da astronomia em 2025? Vamos explorar juntos os momentos astronômicos imperdíveis deste ano!

Último código Strinova e como resgatar o código

Último código Strinova e como resgatar o código

O Código Strinova lhe dará presentes que serão salva-vidas indispensáveis ​​em sua jornada para encontrar a luz novamente.

Último código de desemprego para cultivo imortal e como resgatar o código para obter recompensas

Último código de desemprego para cultivo imortal e como resgatar o código para obter recompensas

O código completo do Cultivo de Desemprego abaixo lhe dará uma série de recompensas.

Calcule o imposto de renda pessoal online, calcule o imposto de renda pessoal online

Calcule o imposto de renda pessoal online, calcule o imposto de renda pessoal online

Esta é uma calculadora automática de imposto de renda pessoal. Você só precisa inserir sua renda, salário do seguro e número de dependentes para calcular sua alíquota de imposto de renda pessoal. Se você quiser saber como calcular o imposto de renda pessoal em detalhes para calculá-lo você mesmo, veja abaixo.

Como criar um índice no Word automaticamente no Word 2019/2016/2010/2007

Como criar um índice no Word automaticamente no Word 2019/2016/2010/2007

Criar um índice automático no Word economiza tempo e aumenta a conveniência ao trabalhar neste editor de texto. Abaixo estão instruções detalhadas para criar um índice automático no Word. Siga-as.

Tudo o que você precisa saber sobre VPN antes de começar a usá-la

Tudo o que você precisa saber sobre VPN antes de começar a usá-la

A mudança para VPNs mudou completamente a privacidade online de muitas pessoas, mas há algumas coisas que você precisa saber antes de começar a usá-las.

Como corrigir o problema do Painel de Controle da NVIDIA que desapareceu no Windows 11/10

Como corrigir o problema do Painel de Controle da NVIDIA que desapareceu no Windows 11/10

Alguns usuários relataram o problema do Painel de Controle da NVIDIA desaparecer no Windows 11/10. Os usuários não conseguem encontrar o aplicativo no menu de contexto da área de trabalho, na bandeja do sistema ou no Painel de Controle do Windows.

Como habilitar a proteção contra roubo do iPhone

Como habilitar a proteção contra roubo do iPhone

O recurso Proteção contra Dispositivo Roubado no iPhone é um novo recurso da versão recém-lançada do iOS 17.3, que melhora a segurança do telefone, especialmente em caso de perda ou roubo.

Causas e soluções para a luz da geladeira não acender

Causas e soluções para a luz da geladeira não acender

A luz da sua geladeira não acende geralmente devido a três atividades principais que aparecem neste artigo.

Como limpar aquecedores a óleo e aquecedores de ventilador corretamente

Como limpar aquecedores a óleo e aquecedores de ventilador corretamente

Se você deseja limpar seu aquecedor a óleo e aquecedor com ventilador, não pode perder nosso artigo abaixo.

Transforme lâminas cegas de liquidificador em lâminas afiadas num piscar de olhos

Transforme lâminas cegas de liquidificador em lâminas afiadas num piscar de olhos

Com apenas esse ingrediente aparentemente inútil, você pode transformar uma lâmina de liquidificador cega em uma afiada num piscar de olhos.