English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En el lenguaje Go, se permite crear dos o más métodos con el mismo nombre en el mismo paquete, pero estos métodos deben tenerDeben tener tipos diferentesEsta función no está disponible en las funciones de Go, lo que significa que no se permite crear métodos con el mismo nombre en el mismo paquete, de lo contrario, el compilador lanzará un error.
Sintaxis:
func(receptor_name_1 Type) método_name(parametro_list)(retorno_type){ // Código } func(receptor_name_2 Type) método_name(parametro_list)(retorno_type){ // Código }
Vamos a discutir este concepto con un ejemplo:
Ejemplo1:
package main import "fmt" //Crear estructuras type student struct { name string branch string } type teacher struct { language string marks int } //Métodos con el mismo nombre pero receptores de tipos diferentes func (s student) show() { fmt.Println("Nombre del Estudiante: ", s.name) fmt.Println("Rama: ", s.branch) } func (t teacher) show() { fmt.Println("Lenguaje:", t.language) fmt.Println("Materiales del Estudiante: ", t.marks) } func main() { // Inicializar valores de la estructura val1 := student{"Rohit", "EEE"} val2 := teacher{"Java", 50} //Llamar al método val1.show() val2.show() }
Salida:
Nombre del Estudiante: Rohit Rama: EEE Lenguaje: Java Materiales del Estudiante: 50
Instrucciones de uso:En el ejemplo anterior, tenemos dos métodos con el mismo nombre, es decirshow()pero los tipos de los receptores son diferentes. Aquí, el primeroshow()El método contiene un receptor de tipo s student, el segundoshow()El método contiene un receptor de tipo t teacher. Enmain()En la función, utilizamos las variables de estructura individuales para llamar a estos dos métodos. Si intenta usar receptores de tipos iguales para crear esteshow()Si se intenta crear este método con receptores de tipos iguales, el compilador lanzará un error.
Ejemplo2:
//Crear métodos con el mismo nombre //Receptores de tipos no estructurados package main import "fmt" type value_1 string type value_2 int //Crear funciones con el mismo nombre //Receptores no estructurados 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) // Mostrar resultado fmt.Println("Result" 1: "", "res"1.display()) fmt.Println("Result" 2: "", "res"2.display()) }
Salida:
Resultado 1: oldtoolbag.com Resultado 2: 532