Menu
Coddy logo textTech

Récapitulatif - Comportement des structures

Fait partie de la section Logique & Flux du Journey GO de Coddy. Leçon 11 sur 68.

challenge icon

Défi

Facile

Dans ce défi, vous allez vous exercer à implémenter des récepteurs de valeur et des récepteurs pointeur en créant un système simple de gestion de rectangles. Vous allez créer une structure Rectangle et définir deux types différents de méthodes qui 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 à :

  1. Définir une structure Rectangle avec deux champs : Width (float64) et Height (float64)
  2. Créer une méthode appelée area avec un récepteur de valeur qui calcule et renvoie l'aire du rectangle (largeur × hauteur)
  3. Créer une méthode appelée scale avec un récepteur pointeur qui multiplie la largeur et la hauteur par le facteur d'échelle donné
  4. Analyser les entrées pour créer une instance de Rectangle
  5. Afficher l'aire initiale au format : "Initial area: [area]"
  6. Appeler la méthode scale avec le facteur d'échelle
  7. Afficher l'aire mise à l'échelle au format : "Scaled area: [area]"

Les valeurs de l'aire doivent être affichées sous forme de nombres entiers lorsqu'elles sont entières (par exemple, 15 au lieu de 15.0), mais avec des décimales lorsque cela est nécessaire (par exemple, 15.5). Ce défi illustre le principe clé suivant : utilisez des récepteurs de valeur pour les méthodes qui se contentent de lire les données (comme le calcul de l'aire) et des récepteurs 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

Entraînez-vous par vous-même : Compilateur Go en ligne