Maison >développement back-end >Golang >Golang prend-il en charge les méthodes du même nom ?

Golang prend-il en charge les méthodes du même nom ?

青灯夜游
青灯夜游original
2022-12-08 19:29:265591parcourir

golang prend en charge les méthodes du même nom. Le langage Go permet la création de deux ou plusieurs méthodes portant le même nom dans le même package, mais les récepteurs de ces méthodes doivent avoir des types différents. Notez que cette fonctionnalité n'est pas disponible dans les fonctions Go, ce qui signifie que les utilisateurs ne sont pas autorisés à le faire. utilisez la même méthode dans le même package. Créez une méthode du même nom dans le package, le compilateur générera une erreur si vous essayez de le faire.

Golang prend-il en charge les méthodes du même nom ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.

Méthodes du même nom dans Go

Dans le langage Go, il est permis de créer deux ou plusieurs méthodes du même nom dans le même package, mais les récepteurs de ces méthodes doivent avoir des types différents. Cette fonctionnalité n'est pas disponible dans les fonctions Go, ce qui signifie que vous n'êtes pas autorisé à créer une méthode avec le même nom dans le même package, et le compilateur générera une erreur si vous essayez de le faire.

Syntaxe :

func(reciver_name_1 Type) method_name(parameter_list)(return_type){
    // Code
}
func(reciver_name_2 Type) method_name(parameter_list)(return_type){
    // Code
}

Discutons de ce concept à l'aide d'un exemple :

Exemple 1 :

package main 
  
import "fmt"
  
//创建结构体
type student struct { 
    name   string 
    branch string 
} 
  
type teacher struct { 
    language string 
    marks    int
} 
  
//名称相同的方法,但有不同类型的接收器
func (s student) show() { 
  
    fmt.Println("学生姓名:", s.name) 
    fmt.Println("Branch: ", s.branch) 
} 
  
func (t teacher) show() { 
  
    fmt.Println("Language:", t.language) 
    fmt.Println("Student Marks: ", t.marks) 
} 
  
func main() { 
  
    // 初始化结构体的值
    val1 := student{"Rohit", "EEE"} 
  
    val2 := teacher{"Java", 50} 
  
    //调用方法
    val1.show() 
    val2.show() 
}

Sortie :

Golang prend-il en charge les méthodes du même nom ?

Note d'utilisation : Dans l'exemple ci-dessus, nous avons deux identiques Méthode de nom, c'est-à-dire show(), mais le type de récepteur est différent. Ici, la première méthode show() contient un récepteur de type s student, et la deuxième méthode show() contient un récepteur de type t professeur. Dans la fonction main(), nous appelons ces deux méthodes à l’aide de leurs variables de structure respectives. Si vous essayez de créer cette méthode show() avec le même type de récepteur, le compilateur générera une erreur.

Exemple 2 :

//创建相同名称的方法
//非结构类型的接收器
package main 
  
import "fmt"
  
type value_1 string 
type value_2 int
  
//创建具有相同名称的函数
//不同类型的非结构接收器
func (a value_1) display() value_1 { 
  
    return a + ".com"
} 
  
func (p value_2) display() value_2 { 
  
    return p + 298 
} 
  
func main() { 
  
    //初始化值 
    res1 := value_1("nhooo") 
    res2 := value_2(234) 
  
    // 打印显示结果
    fmt.Println("Result 1: ", res1.display()) 
    fmt.Println("Result 2: ", res2.display()) 
}

Sortie :

Golang prend-il en charge les méthodes du même nom ?

Pour plus de connaissances sur la programmation, veuillez visiter : Vidéo de programmation ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn