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

À l'intérieur de ce package, vous pouvez définir des fonctions, des variables et des types. N'oubliez pas que seuls les identifiants exportés (ceux commençant 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é à partir d'un autre fichier, vous l'importez comme n'importe quel autre package. Depuis votre package main, vous pouvez ensuite 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.

quiz iconTestez-vous

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

quiz iconTestez-vous

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

quiz iconTestez-vous

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

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 requêtes 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 sommet
  2. Analyser la première entrée en la découpant selon les pipes (|) pour obtenir les définitions de fonctions individuelles
  3. Pour chaque définition de fonction, découper selon les deux-points pour 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 - retourne la somme de a et b
    • Subtract(a, b int) int - retourne a moins b
    • Multiply(a, b int) int - retourne le produit de a et b
    • Divide(a, b int) int - retourne a divisé par b (division entière)
  5. Dans votre programme principal, importer le package mathutils
  6. Afficher l'en-tête d'information 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 découpant selon les pipes pour obtenir les requêtes de calcul individuelles
  9. Pour chaque requête de calcul, découper selon les deux-points pour obtenir le nom de la fonction et les paramètres
  10. Découper les paramètres selon les virgules pour obtenir les deux valeurs entières
  11. Convertir les chaînes de paramètres en entiers en utilisant strconv.Atoi
  12. Afficher l'en-tête du processus de calcul : "Performing calculations:"
  13. Pour chaque requête de calcul :
    • Appeler la fonction appropriée du package mathutils
    • Afficher : "mathutils.[function_name]([param1], [param2]) = [result]"
  14. Calculer et afficher les statistiques de résumé :
    • "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 découper les chaînes d'entrée, le package strconv pour convertir les chaînes en entiers, et le package fmt pour la sortie formatée. Rappelez-vous que seules les fonctions commençant par une lettre majuscule seront exportées et accessibles depuis d'autres packages.

Important : Les deux lignes d'entrée utilisent des pipes (|) comme délimiteur entre les entrées. Chaque entrée de la première ligne a le format FunctionName:param1,param2:operationtype — découpez d'abord sur |, puis découpez chaque entrée sur : pour extraire le nom de la fonction (index 0) et le type d'opération (index 2).

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

Aide-mémoire

Pour créer un package personnalisé, déclarez-le en haut de votre fichier avec le mot-clé package :

package calculator

Seuls les identifiants exportés (commençant par une majuscule) sont accessibles depuis d'autres packages :

package calculator

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

Importez et utilisez votre package personnalisé depuis un autre fichier :

package main

import "calculator"

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

Cette approche modulaire organise le code et permet sa réutilisation dans plusieurs programmes sans dupliquer le code.

Essayez vous-même

package main

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

// TODO: Créez vos fonctions du package mathutils ici
// Puisque nous ne pouvons pas utiliser de fichiers séparés, définissez les fonctions directement
// Celles-ci seraient normalement dans un fichier de package séparé

func main() {
	// Lire l'entrée en utilisant 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. Définir les fonctions Add, Subtract, Multiply, Divide (simulant le package mathutils)
	// 2. Analyser functionDefs : diviser par '|' pour obtenir chaque définition, puis diviser chacune par ':'
	//    Format : FuncName:param1,param2:operation  (ex: "Add:5,3:addition")
	// 3. Afficher les informations du package et les fonctions disponibles
	// 4. Analyser calcRequests (diviser par '|'), effectuer les calculs
	// 5. Afficher les résultats et les statistiques récapitulatives

	// Supprimer les avertissements de variables inutilisé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