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

Golang Basic Tutorial

Golang Control Statements

Golang Functions & Methods

Golang Structs

Golang Slices & Arrays

Golang Strings (String)

Golang Pointers

Golang Interfaces

Golang Concurrency

Golang Exceptions (Error)

Autres outils Golang

Méthodes homonymes Go

En langage Go, il est permis de créer deux ou plusieurs méthodes portant le même nom dans le même paquet, mais ces méthodes doivent avoir des receveursdoivent avoir des types différentsCette fonction n'est pas disponible dans les fonctions Go, ce qui signifie que vous n'êtes pas autorisé à créer deux ou plusieurs méthodes portant le même nom dans le même paquet. Si vous essayez de le faire, le compilateur renverra une erreur.

Syntaxe :

func(nom_receveur_1 Type) méthode_name(paramètres)(type_de_retour){
    // Code
}
func(nom_receveur_2 Type) méthode_name(paramètres)(type_de_retour){
    // Code
}

Permettons de discuter de ce concept à l'aide d'un exemple :

Exemple1:

package main 
  
import "fmt"
  
//Création de structures
type student struct { 
    name string 
    branch string 
} 
  
type teacher struct { 
    language string 
    marks int
} 
  
//Méthodes portant le même nom, mais avec des récepteurs de types différents
func (s student) show() { 
  
    fmt.Println("Student Name : " , s.name) 
    fmt.Println("Branch : " , s.branch) 
} 
  
func (t teacher) show() { 
  
    fmt.Println("Language:" , t.language) 
    fmt.Println("Student Marks : " , t.marks) 
} 
  
func main() { 
  
    // Initialisation des valeurs des structures
    val1 := student{"Rohit", "EEE"} 
  
    val2 := teacher{"Java", 50} 
  
    //Appel de la méthode
    val1.show() 
    val2.show() 
}

Sortie :

Student Name : Rohit
Branch : EEE
Language : Java
Student Marks :  50

Instructions d'utilisation :Dans l'exemple ci-dessus, nous avons deux méthodes portant le même nom, à savoirshow()Mais les types de récepteurs sont différents. Ici, le premiershow()La méthode contient un récepteur de type s student, le deuxièmeshow()La méthode contient un récepteur de type t teacher. Dansmain()Dans la fonction, nous utilisons les variables de structure respectives pour appeler ces deux méthodes. Si vous essayez d'utiliser le même type de récepteur pour créer cetteshow()Si vous essayez de créer cette méthode avec le même récepteur de type, le compilateur lancera une erreur.

Exemple2:

//Création de méthodes portant le même nom
//Récepteurs de types non structurés
package main 
  
import "fmt"
  
type value_1 string 
type value_2 int
  
//Création de fonctions portant le même nom
//Récepteurs non structurés de types différents
func (a value_1) display() value_1 { 
  
    return a + ".com"
} 
  
func (p value_2) display() value_2 { 
  
    return p + 298 
} 
  
func main() { 
  
    //Valeur initiale 
    res1 := value_1("w3codebox") 
    res2 := value_2(234) 
  
    // Affichage des résultats
    fmt.Println("Résultat", 1: "", res1.display()) 
    fmt.Println("Résultat", 2: "", res2.display()) 
}

Sortie :

Résultat 1:  oldtoolbag.com
Résultat 2: 532