Menu
Coddy logo textTech

Créer un Package Simple

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

Il est maintenant temps de créer votre propre package personnalisé ! La création de packages vous permet d’organiser votre code en modules réutilisables qui peuvent être importés et utilisés dans différents programmes.

Pour créer un package, vous commencez par le déclarer en haut de votre fichier avec le mot-clé package suivi du nom du package. Pour notre package de calculatrice, nous utiliserons :

package calculator

Dans ce package, vous pouvez définir des fonctions, des variables et des types. N’oubliez pas que seuls les identifiants exportés (ceux qui commencent par une lettre majuscule) seront accessibles depuis d’autres packages. Voici comment vous pourriez définir une fonction Add exportée :

package calculator

func Add(a, b int) int {
    return a + b
}

Pour utiliser votre package personnalisé depuis un autre fichier, vous l’importez comme n’importe quel autre package. Depuis votre package main, vous pouvez alors appeler les fonctions exportées :

package main

import "calculator"

func main() {
    result := calculator.Add(5, 3)
}

Cette approche modulaire rend votre code plus organisé et vous permet de réutiliser des fonctionnalités dans plusieurs programmes sans dupliquer le code.

challenge icon

Défi

Facile

Créez un package personnalisé mathutils avec des opérations mathématiques de base, puis utilisez-le depuis votre programme principal. Ce défi testera votre capacité à créer un package, à définir des fonctions exportées et à importer votre package personnalisé pour l’utiliser dans un autre programme.

Vous recevrez deux entrées :

  • Une chaîne contenant des définitions de fonctions au format "function1:param1,param2:operation|function2:param1,param2:operation" (par exemple, "Add:5,3:addition|Multiply:4,7:multiplication|Subtract:10,4:subtraction")
  • Une chaîne contenant des demandes de calcul au format "operation1:value1,value2|operation2:value1,value2|operation3:value1,value2" (par exemple, "Add:15,25|Multiply:6,8|Subtract:50,20")

Votre tâche consiste à :

  1. Créer un package mathutils en déclarant package mathutils au début
  2. Analyser la première entrée en la divisant au niveau des barres verticales (|) pour obtenir les définitions de fonctions individuelles
  3. Pour chaque définition de fonction, la diviser au niveau des deux-points afin d’obtenir le nom de la fonction, les paramètres et le type d’opération
  4. Créer les fonctions exportées suivantes dans votre package mathutils :
    • Add(a, b int) int - renvoie la somme de a et b
    • Subtract(a, b int) int - renvoie a moins b
    • Multiply(a, b int) int - renvoie le produit de a et b
    • Divide(a, b int) int - renvoie a divisé par b (division entière)
  5. Dans votre programme principal, importer le package mathutils
  6. Afficher l’en-tête d’informations du package : "=== MATHUTILS PACKAGE DEMO ==="
  7. Analyser la première entrée et afficher les fonctions disponibles :
    • "Available functions in mathutils package:"
    • Pour chaque fonction : "- [function_name]: Performs [operation_type] on two integers"
  8. Analyser la deuxième entrée en la divisant au niveau des barres verticales pour obtenir les demandes de calcul individuelles
  9. Pour chaque demande de calcul, la diviser au niveau des deux-points afin d’obtenir le nom de la fonction et les paramètres
  10. Diviser les paramètres au niveau des virgules afin d’obtenir les deux valeurs entières
  11. Convertir les chaînes de paramètres en entiers à l’aide de strconv.Atoi
  12. Afficher l’en-tête du processus de calcul : "Performing calculations:"
  13. Pour chaque demande de calcul :
    • Appeler la fonction appropriée du package mathutils
    • Afficher : "mathutils.[function_name]([param1], [param2]) = [result]"
  14. Calculer et afficher les statistiques récapitulatives :
    • "Calculation Summary:"
    • "Total calculations performed: [number_of_calculations]"
    • "Functions used: [comma_separated_list_of_unique_function_names_used]"
    • "Sum of all results: [sum_of_all_calculation_results]"
  15. Afficher la confirmation d’utilisation du package :
    • "Package demonstration completed successfully"
    • "All functions from mathutils package executed correctly"

Utilisez le package strings pour diviser les chaînes d’entrée, le package strconv pour convertir les chaînes en entiers et le package fmt pour produire une sortie formatée. N’oubliez pas que seules les fonctions commençant par des lettres majuscules seront exportées et accessibles depuis d’autres packages.

Important : Les deux lignes d’entrée utilisent des barres verticales (|) comme délimiteur entre les entrées. Chaque entrée de la première ligne suit le format FunctionName:param1,param2:operationtype : divisez d’abord au niveau de |, puis divisez chaque entrée au niveau de : afin d’extraire le nom de la fonction (index 0) et le type d’opération (index 2).

Ce défi montre comment créer du code réutilisable grâce à des packages personnalisés et comment organiser les fonctionnalités en modules logiques.

Essayez vous-même

package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

// TODO: Create your mathutils package functions here
// Puisque nous ne pouvons pas utiliser de fichiers séparés, définissez les fonctions directement
// Celles-ci se trouveraient normalement dans un fichier de package séparé

func main() {
	// Lire l'entrée à l'aide de bufio.Scanner pour gérer correctement les espaces
	scanner := bufio.NewScanner(os.Stdin)

	scanner.Scan()
	functionDefs := scanner.Text()

	scanner.Scan()
	calcRequests := scanner.Text()

	// TODO: Écrivez votre code ci-dessous
	// 1. Define Add, Subtract, Multiply, Divide functions (simulating mathutils package)
	// 2. Analyser functionDefs : diviser par '|' pour obtenir chaque définition, puis diviser chacune par ':'
	//    Format : FuncName:param1,param2:operation  (p. ex. "Add:5,3:addition")
	// 3. Display package information and available functions
	// 4. Parse calcRequests (split by '|'), perform calculations
	// 5. Afficher les résultats et les statistiques récapitulatives

	// Supprimer les avertissements de variables non utilisées
	_ = functionDefs
	_ = calcRequests
	_ = fmt.Sprintf
	_ = strconv.Atoi
	_ = strings.Split

	// N'oubliez pas de produire le format requis tel que spécifié dans le défi
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux

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