Récapitulatif - Formes et comportements
Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 19 sur 68.
Défi
FacileDans ce défi, vous allez créer un système de communication qui démontre le polymorphisme au moyen d’interfaces. Vous allez construire une interface Speaker et l’implémenter avec différents types capables de « parler » à leur manière.
Vous recevrez trois entrées :
- Une chaîne représentant le nombre de locuteurs à créer (par exemple,
"3") - Une chaîne contenant les types de locuteurs séparés par des virgules (par exemple,
"person,parrot,person") - Une chaîne contenant les noms des locuteurs séparés par des virgules (par exemple,
"Alice,Polly,Bob")
Votre tâche consiste à :
- Définir une interface
Speakeravec une seule signature de méthode :Speak(), qui renvoie une chaîne - Définir une structure
Personavec un champName(string) - Définir une structure
Parrotavec un champName(string) - Implémenter la méthode
Speak()pour les deux structures :- Person doit renvoyer :
"Hello, I'm [name]" - Parrot doit renvoyer :
"Squawk! [name] says hello!"
- Person doit renvoyer :
- Créer une fonction appelée
makeAllSpeakqui prend en paramètre une tranche d’interfacesSpeaker - Dans
makeAllSpeak, parcourir la tranche et appeler la méthodeSpeak()sur chaque locuteur, en affichant le résultat - Analyser les entrées afin de créer les instances de locuteurs appropriées en fonction des types et des noms fournis
- Stocker tous les locuteurs dans une tranche d’interfaces
Speaker - Appeler
makeAllSpeakavec votre tranche de locuteurs
Les locuteurs doivent être créés dans l’ordre où ils apparaissent dans l’entrée. Par exemple, si les types sont "person,parrot,person" et les noms sont "Alice,Polly,Bob", créez une Person nommée Alice, puis un Parrot nommé Polly, puis une Person nommée Bob. Ce défi montre comment différents types peuvent être traités uniformément au moyen d’une interface commune, illustrant la puissance du polymorphisme dans Go.
Essayez vous-même
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
// Lire l'entrée
var numSpeakersStr string
var speakerTypesStr string
var speakerNamesStr string
fmt.Scanln(&numSpeakersStr)
fmt.Scanln(&speakerTypesStr)
fmt.Scanln(&speakerNamesStr)
// Analyser l'entrée
numSpeakers, _ := strconv.Atoi(numSpeakersStr)
speakerTypes := strings.Split(speakerTypesStr, ",")
speakerNames := strings.Split(speakerNamesStr, ",")
// TODO: Écrivez votre code ci-dessous
// 1. Définir l'interface Speaker
// 2. Définir les structures Person et Parrot
// 3. Implémenter les méthodes Speak() pour les deux structures
// 4. Créer la fonction makeAllSpeak
// 5. Créer les haut-parleurs (speakers) basés sur l'entrée et les stocker dans une tranche (slice)
// 6. Appeler makeAllSpeak avec votre tranche
}Toutes les leçons de Logique & Flux
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportementsEntraînez-vous par vous-même : Compilateur Go en ligne