Récapitulatif - Comportement des structures
Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 11 sur 68.
Défi
FacileDans ce défi, vous allez vous entraîner à implémenter des récepteurs de valeur et de pointeur en créant un système simple de gestion de rectangles. Vous créerez une structure Rectangle et définirez deux types de méthodes différents qui démontrent quand utiliser chaque type de récepteur.
Vous recevrez trois entrées :
- Une chaîne représentant la largeur du rectangle (par exemple,
"5.0") - Une chaîne représentant la hauteur du rectangle (par exemple,
"3.0") - Une chaîne représentant un facteur d'échelle (par exemple,
"2.0")
Votre tâche consiste à :
- Définir une structure
Rectangleavec deux champs :Width(float64) etHeight(float64) - Créer une méthode appelée
areaavec un récepteur de valeur qui calcule et renvoie l'aire du rectangle (largeur × hauteur) - Créer une méthode appelée
scaleavec un récepteur de pointeur qui multiplie à la fois la largeur et la hauteur par le facteur d'échelle donné - Analyser les entrées pour créer une instance de
Rectangle - Afficher l'aire initiale en utilisant le format :
"Initial area: [area]" - Appeler la méthode
scaleavec le facteur d'échelle - Afficher l'aire mise à l'échelle en utilisant le format :
"Scaled area: [area]"
Les valeurs de l'aire doivent être affichées sous forme de nombres entiers lorsqu'il s'agit d'entiers (par exemple, 15 au lieu de 15.0), mais avec des décimales si nécessaire (par exemple, 15.5). Ce défi démontre le principe clé : utiliser des récepteurs de valeur pour les méthodes qui lisent uniquement des données (comme le calcul de l'aire) et des récepteurs de pointeur pour les méthodes qui modifient la structure d'origine (comme la mise à l'échelle des dimensions).
Essayez vous-même
package main
import (
"fmt"
"strconv"
)
// TODO: Définissez votre structure Rectangle ici
// TODO: Implémentez la méthode area avec un récepteur de valeur ici
// TODO: Implémentez la méthode scale avec un récepteur de pointeur ici
func main() {
// Lire l'entrée
var widthStr string
var heightStr string
var scaleStr string
fmt.Scanln(&widthStr)
fmt.Scanln(&heightStr)
fmt.Scanln(&scaleStr)
// Convertir les entrées en float64
width, _ := strconv.ParseFloat(widthStr, 64)
height, _ := strconv.ParseFloat(heightStr, 64)
scaleFactor, _ := strconv.ParseFloat(scaleStr, 64)
// TODO: Créer une instance de Rectangle et implémenter la solution ci-dessous
// Afficher l'aire initiale
// fmt.Printf("Initial area: %.0f\n", initialArea) // Utilisez ce format pour la sortie
// Redimensionner le rectangle
// Afficher l'aire redimensionnée
// fmt.Printf("Scaled area: %.0f\n", scaledArea) // Utilisez ce format pour la sortie
}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 comportements