Maison développement back-end Golang Points clés à connaître sur les méthodes du même nom en Golang

Points clés à connaître sur les méthodes du même nom en Golang

Feb 23, 2024 pm 08:39 PM
掌握技巧 编译错误 méthode golang Notes sur le même nom

Points clés à connaître sur les méthodes du même nom en Golang

Les méthodes portant le même nom en langage Golang font référence à la définition de plusieurs méthodes en même temps dans une structure, avec le même nom de méthode mais des types de récepteurs différents. Lorsque vous utilisez des méthodes portant le même nom, vous devez faire attention à certains détails, sinon cela pourrait provoquer des erreurs de compilation ou un comportement inattendu.

Ce qui suit abordera les précautions à prendre pour maîtriser la méthode Golang du même nom à travers des exemples de code spécifiques.

Supposons que nous ayons une structure nommée Person. La structure est définie comme suit :

package main

import "fmt"

type Person struct {
    Name string
}

func (p Person) SayHello() {
    fmt.Printf("Hello, I am %s
", p.Name)
}

func (p *Person) SayHi() {
    fmt.Printf("Hi, I am %s
", p.Name)
}
Copier après la connexion

Dans le code ci-dessus, nous définissons une structure nommée Person, qui a deux méthodes du même nom : SayHello et SayHi reçoit une personne. type et un pointeur vers le type Personne en tant que destinataire. Ensuite, nous créons une instance du type Person et un pointeur vers le type Person :

func main() {
    p1 := Person{Name: "Alice"}
    p2 := &Person{Name: "Bob"}

    p1.SayHello() // 输出:Hello, I am Alice
    p1.SayHi()    // 编译错误:cannot call pointer method on p1
    p2.SayHello() // 编译错误:cannot call value method on p2
    p2.SayHi()    // 输出:Hi, I am Bob
}
Copier après la connexion

Dans la fonction principale, nous créons une instance du type Person p1 et un pointeur vers le type Person p2. Utilisez ensuite ces deux objets pour appeler respectivement les méthodes SayHello et SayHi. Nous pouvons voir que l'appel de la méthode de p1 provoquera une erreur de compilation car la méthode SayHi nécessite un récepteur de pointeur de même, l'appel de la méthode de p2 provoquera également une erreur de compilation car la méthode SayHello nécessite un récepteur de valeur ; La méthode ne peut être appelée correctement que si le type de récepteur de la méthode correspond au type de l'objet appelant la méthode.

De plus, il convient de noter que lors de l'implémentation d'une interface, s'il existe une méthode du même nom dans la structure qui implémente l'interface, seule la méthode de la structure est conforme au contrat de l'interface. l'implémentation de la méthode et du pointeur basée sur le type de récepteur ne peut implémenter que des interfaces de type pointeur, et les méthodes de type valeur ne peuvent implémenter que des interfaces de type valeur. Par conséquent, lorsque vous utilisez des méthodes portant le même nom pour implémenter des interfaces, il faut veiller tout particulièrement à ce que le type de récepteur et le type d'interface soient cohérents.

En général, les précautions pour maîtriser les méthodes de Golang du même nom incluent : comprendre la définition de la méthode du même nom, éviter les erreurs de compilation lors de l'appel et faire attention à la cohérence du type de récepteur et du type d'interface lors de l'implémentation L'interface. Ce n'est qu'en comprenant et en utilisant correctement la méthode du même nom que nous pourrons exploiter pleinement les caractéristiques du langage Golang et écrire du code efficace et fiable.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Explication détaillée de l'héritage des fonctions C++ : Comment utiliser le « pointeur de classe de base » et le « pointeur de classe dérivé » dans l'héritage ? Explication détaillée de l'héritage des fonctions C++ : Comment utiliser le « pointeur de classe de base » et le « pointeur de classe dérivé » dans l'héritage ? May 01, 2024 pm 10:27 PM

Dans l'héritage de fonction, utilisez le « pointeur de classe de base » et le « pointeur de classe dérivée » pour comprendre le mécanisme d'héritage : lorsque le pointeur de classe de base pointe vers l'objet de classe dérivé, une transformation ascendante est effectuée et seuls les membres de la classe de base sont accessibles. Lorsqu’un pointeur de classe dérivée pointe vers un objet de classe de base, une conversion vers le bas est effectuée (dangereuse) et doit être utilisée avec prudence.

Comment exécuter le langage C dans notepad++ Comment exécuter le langage C dans notepad++ Apr 08, 2024 am 10:06 AM

Notepad++ lui-même ne peut pas exécuter de programmes en langage C et nécessite un compilateur externe pour compiler et exécuter le code. Pour utiliser un compilateur externe, vous pouvez suivre les étapes suivantes pour le configurer : 1. Téléchargez et installez le compilateur du langage C ; 2. Créez un outil personnalisé dans Notepad++ et configurez le chemin et les paramètres du fichier exécutable du compilateur ; le programme en langage C et enregistrez-le avec une extension de fichier .c ; 4. Sélectionnez le fichier du programme en langage C et sélectionnez un outil personnalisé dans le menu "Exécuter" pour compiler 5. Affichez les résultats de la compilation et affichez un message d'erreur ou de réussite de la compilation ; . Si la compilation réussit, un fichier exécutable sera généré.

Sur quelle touche appuyer lors de l'exécution du code python dans sublime Sur quelle touche appuyer lors de l'exécution du code python dans sublime Apr 03, 2024 pm 03:54 PM

Les touches de raccourci pour exécuter du code Python dans Sublime Text sont : Windows et Linux : Ctrl + B Mac : Cmd + B Placez le curseur dans le code. Appuyez sur la touche de raccourci. Le code sera exécuté à l'aide de l'interpréteur Python par défaut du système.

Que signifie val en Java Que signifie val en Java Apr 25, 2024 pm 10:06 PM

Le mot-clé val en Java est utilisé pour déclarer une variable locale immuable, c'est-à-dire que sa valeur ne peut pas être modifiée une fois attribuée. Les fonctionnalités sont les suivantes : Immuabilité : Une fois initialisée, la variable val ne peut pas être réaffectée. Portée locale : les variables val ne sont visibles que dans le bloc de code dans lequel elles sont déclarées. Inférence de type : le compilateur Java déduira le type de la variable val en fonction de l'expression affectée. Variables locales uniquement : val ne peut être utilisé que pour déclarer des variables locales, pas des champs de classe ou des paramètres de méthode.

La différence entre const et statique en C++ La différence entre const et statique en C++ May 01, 2024 am 10:54 AM

Le modificateur const indique une constante et la valeur ne peut pas être modifiée ; le modificateur static indique la durée de vie et la portée de la variable. Les données membres modifiées par const ne peuvent pas être modifiées après l'initialisation. Les variables modifiées par static sont initialisées au démarrage du programme et détruites à la fin du programme. Elles existeront même s'il n'y a pas d'objet actif et sont accessibles à travers les fonctions. Les variables locales modifiées par const doivent être initialisées lors de leur déclaration, tandis que les variables locales modifiées par static peuvent être initialisées ultérieurement. Les variables membres de classe modifiées par Const doivent être initialisées dans le constructeur ou la liste d'initialisation, tandis que les variables membres de classe modifiées statiquement peuvent être initialisées en dehors de la classe.

Que signifie = en Java Que signifie = en Java Apr 26, 2024 pm 11:30 PM

L'opérateur "=" dans le langage de programmation Java est utilisé pour attribuer une valeur à une variable, en stockant la valeur à droite de l'expression dans la variable de gauche. Utilisation : variable = expression, où variable est le nom de la variable qui reçoit l'affectation et expression est le segment de code qui calcule ou renvoie la valeur.

Comment afficher la barre de navigation Eclipse Comment afficher la barre de navigation Eclipse May 05, 2024 pm 07:12 PM

La barre de navigation Eclipse peut être affichée via le menu : Fenêtre > Afficher la vue > Navigation Touche de raccourci : Ctrl + 3 (Windows) ou Cmd + 3 (Mac) Cliquez avec le bouton droit sur l'espace de travail > Afficher la vue > Navigation La barre de navigation contient les fonctions suivantes : Navigateur de ressources du projet : affiche les dossiers et les fichiers. Navigateur de ressources du package : affiche la structure du package Java. Vue du problème : affiche les erreurs de compilation et les avertissements. Vue des tâches : affiche les tâches. Champ de recherche : recherche du code et des fichiers. Vue des signets : marque les lignes de code pour un accès rapide.

Que signifie Eclipse lorsqu'il dit que la classe principale ne peut pas être chargée ? Que signifie Eclipse lorsqu'il dit que la classe principale ne peut pas être chargée ? May 05, 2024 pm 07:09 PM

Solution à l'erreur « Erreur : impossible de trouver ou de charger la classe principale » dans Eclipse : vérifiez si la classe principale existe et si le chemin est correct. Vérifiez que la classe principale se trouve dans le package correct et que l'accès public autorise l'accès à Eclipse. Vérifiez la configuration du chemin de classe pour vous assurer qu'Eclipse peut trouver le fichier de classe pour la classe principale. Compilez et corrigez l’erreur qui a provoqué l’échec du chargement de la classe principale. Vérifiez la trace de la pile pour identifier la source du problème. Compilez à partir de la ligne de commande à l'aide de la commande javac et vérifiez les messages d'erreur. Redémarrez Eclipse pour résoudre les problèmes potentiels.

See all articles