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