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 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 à :

  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 de pointeur qui multiplie à la fois 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 en utilisant le format : "Initial area: [area]"
  6. Appeler la méthode scale avec le facteur d'échelle
  7. 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