En el lenguaje Go, se permite crear dos o más métodos con el mismo nombre en el mismo paquete, pero el receptor de estos métodos debe ser de diferentes tipos. Esta función no está disponible en la función Go, lo que significa que no puede crear métodos con el mismo nombre en el mismo paquete; si intenta hacerlo, el compilador arrojará un error.
Sintaxis:
func(reciver_name_1 Type) method_name(parameter_list)(return_type){
// Code
}func(reciver_name_2 Type) method_name(parameter_list)(return_type){
// Code
}
Discutamos este concepto con la ayuda de los ejemplos:
Ejemplo 1:
// Go program to illustrate how to // create methods of the same name package main import "fmt" // Creating structures type student struct { name string branch string } type teacher struct { language string marks int } // Same name methods, but with // different type of receivers func (s student) show() { fmt.Println("Name of the Student:", s.name) fmt.Println("Branch: ", s.branch) } func (t teacher) show() { fmt.Println("Language:", t.language) fmt.Println("Student Marks: ", t.marks) } // Main function func main() { // Initializing values // of the structures val1 := student{"Rohit", "EEE"} val2 := teacher{"Java", 50} // Calling the methods val1.show() val2.show() }
Producción:
Name of the Student: Rohit Branch: EEE Language: Java Student Marks: 50
Explicación: En el ejemplo anterior, tenemos dos métodos con el mismo nombre, es decir, show() pero con diferentes tipos de receptores. Aquí el primer método show() contiene un receptor que es del tipo estudiante y el segundo método show() contiene un receptor que es del tipo profesor. Y en la función main() , llamamos a ambos métodos con la ayuda de sus respectivas variables de estructura. Si intenta crear estos métodos show() con el mismo tipo de receptor, el compilador arroja un error.
Ejemplo 2:
// Go program to illustrate how to // create the same name methods // with non-struct type receivers package main import "fmt" type value_1 string type value_2 int // Creating same name function with // different types of non-struct receivers func (a value_1) display() value_1 { return a + "forGeeks" } func (p value_2) display() value_2 { return p + 298 } // Main function func main() { // Initializing the values res1 := value_1("Geeks") res2 := value_2(234) // Display the results fmt.Println("Result 1: ", res1.display()) fmt.Println("Result 2: ", res2.display()) }
Producción:
Result 1: GeeksforGeeks Result 2: 532
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA