English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在Go语言中,允许在同一包中创建两个或多个具有相同名称的方法,但是这些方法的接收者必须具有不同的类型。该功能在Go函数中不可用,这意味着不允许您在同一包中创建相同名称的方法,如果尝试这样做,则编译器将抛出错误。
语法:
func(receiver_name_1 Type) method_name(parameter_list)(return_type){ // Code } func(receiver_name_2 Type) method_name(parameter_list)(return_type){ // Code }
Lassen Sie uns mit einem Beispiel diesen Begriff diskutieren:
Beispiel1:
package main import "fmt" //Erstellen Sie Strukturen type student struct { name string branch string } type teacher struct { language string marks int } //Methoden mit dem gleichen Namen, aber verschiedenen Empfängertypen func (s student) show() { fmt.Println("Student Name: " s.name) fmt.Println("Fakultät: " s.branch) } func (t teacher) show() { fmt.Println("Sprache: " t.language) fmt.Println("Student Noten: " t.marks) } func main() { // Initialisiere die Werte der Struktur val1 := student{"Rohit", "EEE"} val2 := teacher{"Java", 50} //Methode aufrufen val1.show() val2.show() }
Ausgabe:
Student Name: Rohit Fakultät: EEE Sprache: Java Student Noten: 50
Verwendungshinweis:In dem obigen Beispiel haben wir zwei Methoden mit dem gleichen Namen, nämlichshow()haben aber verschiedene Empfängertypen. Hier, der ersteshow()Methoden enthalten den Empfänger des Typs s student, der zweiteshow()Methoden enthalten den Empfänger des Typs t teacher. Inmain()In der Funktion verwenden wir die Variablen der eigenen Strukturtypen, um diese beiden Methoden aufzurufen. Wenn versucht wird, mit dem gleichen Typen Empfänger diese zu erstellenshow()Falls der Compiler eine Fehlermeldung ausgibt.
Beispiel2:
//Erstellen Sie Methoden mit dem gleichen Namen //Nicht-strukturelle Empfänger package main import "fmt" type value_1 string type value_2 int //Erstellen Sie Funktionen mit dem gleichen Namen //Funktionen für nicht-strukturelle Empfänger verschiedener Typen func (a value_1) display() value_1 { return a + ".com" } func (p value_2) display() value_2 { return p + 298 } func main() { //Initialwert res1 := value_1("w3codebox") res2 := value_2(234) // Druckergebnis anzeigen fmt.Println("Ergebnis" 1: "", res1.display()) fmt.Println("Ergebnis" 2: "", res2.display()) }
Ausgabe:
Ergebnis 1: oldtoolbag.com Ergebnis 2: 532