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

Golang 基础教程

Golang 控制语句

Golang 函数 & 方法

Golang 结构体

Golang 切片 & 数组

Golang 字符串(String)

Golang 指针

Golang 接口

Golang 并发

Golang 异常(Error)

Golang 其他杂项

Go Namensgleiche Methoden

在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