Menu
Coddy logo textTech

Ein einfaches Package erstellen

Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 53 von 68.

Jetzt ist es an der Zeit, Ihr eigenes benutzerdefiniertes Paket zu erstellen! Das Erstellen von Paketen ermöglicht es Ihnen, Ihren Code in wiederverwendbare Module zu organisieren, die importiert und in verschiedenen Programmen verwendet werden können.

Um ein Paket zu erstellen, beginnen Sie damit, es am Anfang Ihrer Datei mit dem Schlüsselwort package zu deklarieren, gefolgt vom Paketnamen. Für unser Calculator-Paket verwenden wir:

package calculator

Innerhalb dieses Pakets können Sie Funktionen, Variablen und Typen definieren. Denken Sie daran, dass nur exportierte Bezeichner (solche, die mit einem Großbuchstaben beginnen) von anderen Paketen aus zugänglich sind. So könnten Sie eine exportierte Add-Funktion definieren:

package calculator

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

Um Ihr benutzerdefiniertes Paket aus einer anderen Datei zu verwenden, importieren Sie es genau wie jedes andere Paket. Von Ihrem main-Paket aus können Sie dann die exportierten Funktionen aufrufen:

package main

import "calculator"

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

Dieser modulare Ansatz macht Ihren Code organisierter und ermöglicht es Ihnen, Funktionalität über mehrere Programme hinweg wiederzuverwenden, ohne Code zu duplizieren.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein benutzerdefiniertes mathutils-Paket mit grundlegenden mathematischen Operationen und verwenden Sie es anschließend in Ihrem Hauptprogramm. Diese Herausforderung testet Ihre Fähigkeit, ein Paket zu erstellen, exportierte Funktionen zu definieren und Ihr benutzerdefiniertes Paket für die Verwendung in einem anderen Programm zu importieren.

Sie erhalten zwei Eingaben:

  • Einen String, der Funktionsdefinitionen im Format "function1:param1,param2:operation|function2:param1,param2:operation" enthält (z. B. "Add:5,3:addition|Multiply:4,7:multiplication|Subtract:10,4:subtraction")
  • Einen String, der Berechnungsanfragen im Format "operation1:value1,value2|operation2:value1,value2|operation3:value1,value2" enthält (z. B. "Add:15,25|Multiply:6,8|Subtract:50,20")

Ihre Aufgabe ist es:

  1. Erstellen Sie ein mathutils-Paket, indem Sie package mathutils am Anfang deklarieren
  2. Verarbeiten Sie die erste Eingabe, indem Sie sie an den Pipes (|) aufteilen, um einzelne Funktionsdefinitionen zu erhalten
  3. Teilen Sie jede Funktionsdefinition an den Doppelpunkten auf, um den Funktionsnamen, die Parameter und den Operationstyp zu erhalten
  4. Erstellen Sie die folgenden exportierten Funktionen in Ihrem mathutils-Paket:
    • Add(a, b int) int - gibt die Summe von a und b zurück
    • Subtract(a, b int) int - gibt a minus b zurück
    • Multiply(a, b int) int - gibt das Produkt von a und b zurück
    • Divide(a, b int) int - gibt a geteilt durch b zurück (Ganzzahldivision)
  5. Importieren Sie in Ihrem Hauptprogramm das mathutils-Paket
  6. Zeigen Sie den Header für die Paketinformationen an: "=== MATHUTILS PACKAGE DEMO ==="
  7. Verarbeiten Sie die erste Eingabe und zeigen Sie die verfügbaren Funktionen an:
    • "Available functions in mathutils package:"
    • Für jede Funktion: "- [function_name]: Performs [operation_type] on two integers"
  8. Verarbeiten Sie die zweite Eingabe, indem Sie sie an den Pipes aufteilen, um einzelne Berechnungsanfragen zu erhalten
  9. Teilen Sie jede Berechnungsanfrage an den Doppelpunkten auf, um den Funktionsnamen und die Parameter zu erhalten
  10. Teilen Sie die Parameter an den Kommas auf, um die beiden Ganzzahlwerte zu erhalten
  11. Konvertieren Sie die Parameter-Strings mit strconv.Atoi in Ganzzahlen
  12. Zeigen Sie den Header für den Berechnungsprozess an: "Performing calculations:"
  13. Für jede Berechnungsanfrage:
    • Rufen Sie die entsprechende Funktion aus dem mathutils-Paket auf
    • Anzeige: "mathutils.[function_name]([param1], [param2]) = [result]"
  14. Berechnen und zeigen Sie Zusammenfassungsstatistiken an:
    • "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. Zeigen Sie die Bestätigung der Paketnutzung an:
    • "Package demonstration completed successfully"
    • "All functions from mathutils package executed correctly"

Verwenden Sie das strings-Paket, um die Eingabestrings aufzuteilen, das strconv-Paket, um Strings in Ganzzahlen umzuwandeln, und das fmt-Paket für die formatierte Ausgabe. Denken Sie daran, dass nur Funktionen, die mit Großbuchstaben beginnen, exportiert werden und von anderen Paketen aus zugänglich sind.

Wichtig: Beide Eingabezeilen verwenden Pipes (|) als Trennzeichen zwischen den Einträgen. Jeder Eintrag in der ersten Eingabe hat das Format FunctionName:param1,param2:operationtype — teilen Sie zuerst nach | auf, und teilen Sie dann jeden Eintrag nach : auf, um den Funktionsnamen (Index 0) und den Operationstyp (Index 2) zu extrahieren.

Diese Herausforderung zeigt, wie man wiederverwendbaren Code durch benutzerdefinierte Pakete erstellt und wie man Funktionalität in logische Module organisiert.

Spickzettel

Um ein benutzerdefiniertes Paket zu erstellen, deklarieren Sie es am Anfang Ihrer Datei mit dem Schlüsselwort package:

package calculator

Nur exportierte Bezeichner (die mit einem Großbuchstaben beginnen) sind von anderen Paketen aus zugänglich:

package calculator

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

Importieren und verwenden Sie Ihr benutzerdefiniertes Paket aus einer anderen Datei:

package main

import "calculator"

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

Dieser modulare Ansatz organisiert den Code und ermöglicht die Wiederverwendung in mehreren Programmen, ohne Code zu duplizieren.

Probier es selbst

package main

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

// TODO: Erstellen Sie hier Ihre mathutils-Paketfunktionen
// Da wir keine separaten Dateien verwenden können, definieren Sie die Funktionen direkt
// Diese würden sich normalerweise in einer separaten Paketdatei befinden

func main() {
	// Eingabe mit bufio.Scanner lesen, um Leerzeichen korrekt zu behandeln
	scanner := bufio.NewScanner(os.Stdin)

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

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

	// TODO: Schreiben Sie Ihren Code unten
	// 1. Definieren Sie die Funktionen Add, Subtract, Multiply, Divide (Simulation des mathutils-Pakets)
	// 2. Parsen von functionDefs: Trennung durch '|', um jede Definition zu erhalten, dann jede durch ':' trennen
	//    Format: Funktionsname:Parameter1,Parameter2:Operation (z. B. "Add:5,3:addition")
	// 3. Paketinformationen und verfügbare Funktionen anzeigen
	// 4. calcRequests parsen (getrennt durch '|'), Berechnungen durchführen
	// 5. Ergebnisse und zusammenfassende Statistiken anzeigen

	// Warnungen wegen nicht verwendeter Variablen unterdrücken
	_ = functionDefs
	_ = calcRequests
	_ = fmt.Sprintf
	_ = strconv.Atoi
	_ = strings.Split

	// Denken Sie daran, das erforderliche Format wie in der Challenge angegeben auszugeben
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf