English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico Golang

Comandos de controle Golang

Funções & Métodos Golang

Estruturas Golang

Fatias & Arrays Golang

Strings Golang (String)

Ponteiros Golang

Interfaces Golang

Concorrência Golang

Exceções Golang (Error)

Outros itens Golang

Método com Nome Iguais Go

Em Go, é permitido criar dois ou mais métodos com o mesmo nome no mesmo pacote, mas esses métodos devem terDeve ter tipos diferentesEssa função não está disponível nas funções Go, o que significa que não é permitido criar métodos com o mesmo nome no mesmo pacote. Se tentar fazer isso, o compilador lançará um erro.

Sintaxe:

func(recebedor_name_1 Type) método_name(parametro_list)(retorno_type){
    // Code
}
func(recebedor_name_2 Type) método_name(parametro_list)(retorno_type){
    // Code
}

Vamos usar um exemplo para discutir esse conceito:

Exemplo1:

package main 
  
import "fmt"
  
//Criar estrutura
type student struct { 
    name string 
    branch string 
} 
  
type teacher struct { 
    language string 
    marks int
} 
  
//Métodos com o mesmo nome, mas com diferentes tipos de receptores
func (s student) show() { 
  
    fmt.Println("Nome do aluno:", s.name) 
    fmt.Println("Branch:", s.branch) 
} 
  
func (t teacher) show() { 
  
    fmt.Println("Language:", t.language) 
    fmt.Println("Student Marks:", t.marks) 
} 
  
func main() { 
  
    // Inicializar o valor da estrutura
    val1 := student{"Rohit", "EEE"} 
  
    val2 := teacher{"Java", 50} 
  
    //Chamar método
    val1.show() 
    val2.show() 
}

Saída:

Nome do aluno: Rohit
Caminho: EEE
Linguagem: Java
Student Marks:  50

Instruções de uso:No exemplo acima, temos dois métodos com o mesmo nome, ou sejashow()mas os tipos dos receptores são diferentes. Aqui, o primeiroshow()O método contém o receptor de tipo s student, o segundoshow()O método contém o receptor de tipo t teacher. Emmain()Dentro da função, usamos os variáveis de estrutura individuais para chamar esses dois métodos. Se tentarmos criar esteshow()Se o compilador encontrar métodos com o mesmo nome, ele lançará um erro.

Exemplo2:

//Criar métodos com o mesmo nome
//Receptores de tipos não estruturados
package main 
  
import "fmt"
  
type value_1 string 
type value_2 int
  
//Criar funções com o mesmo nome
//Receptores não estruturados de tipos diferentes
func (a value_1) display() value_1 { 
  
    return a + ".com"
} 
  
func (p value_2) display() value_2 { 
  
    return p + 298 
} 
  
func main() { 
  
    //Valor inicial 
    res1 := value_1("w3codebox") 
    res2 := value_2(234) 
  
    // Imprimir resultado exibido
    fmt.Println("Result" 1: "",	res1.display()) 
    fmt.Println("Result" 2: "",	res2.display()) 
}

Saída:

Result 1:  oldtoolbag.com
Result 2: 532