Menu
Coddy logo textTech

Recap – Erstellen eines Utilitys

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

challenge icon

Aufgabe

Einfach

Erstellen Sie ein umfassendes stringutil-Paket mit Funktionen zur String-Manipulation und demonstrieren Sie dessen Verwendung in einem Hauptprogramm. Diese Herausforderung testet Ihre Fähigkeit, ein benutzerdefiniertes Utility-Paket zu erstellen, exportierte Funktionen zu implementieren und Ihr Paket von einem anderen Programm aus zu verwenden.

Sie erhalten zwei Eingaben:

  • Einen String, der Funktionsspezifikationen im Format "function1:description1,function2:description2" enthält (z. B. "Reverse:reverses a string,ToUpper:converts to uppercase,ToLower:converts to lowercase")
  • Einen String, der Test-Strings enthält, die durch Pipes im Format "string1|string2|string3" getrennt sind (z. B. "hello|Go Programming|WORLD")

Ihre Aufgabe ist es:

  1. Erstellen Sie ein stringutil-Paket, indem Sie package stringutil deklarieren
  2. Analysieren Sie die erste Eingabe, indem Sie sie an Kommas aufteilen, um die einzelnen Funktionsspezifikationen zu erhalten
  3. Teilen Sie für jede Funktionsspezifikation den String an Doppelpunkten auf, um den Funktionsnamen und die Beschreibung zu erhalten
  4. Implementieren Sie die folgenden exportierten Funktionen in Ihrem stringutil-Paket:
    • Reverse(s string) string - gibt den String mit den Zeichen in umgekehrter Reihenfolge zurück
    • ToUpper(s string) string - gibt den in Großbuchstaben umgewandelten String zurück
    • ToLower(s string) string - gibt den in Kleinbuchstaben umgewandelten String zurück
    • Length(s string) int - gibt die Länge des Strings zurück
  5. Importieren Sie in Ihrem Hauptprogramm das stringutil-Paket
  6. Zeigen Sie den Paket-Header an: "=== STRINGUTIL PACKAGE DEMONSTRATION ==="
  7. Zeigen Sie die verfügbaren Funktionen an:
    • "Available functions in stringutil package:"
    • Für jede Funktion aus der ersten Eingabe: "- [function_name]: [description]"
  8. Analysieren Sie die zweite Eingabe, indem Sie sie an Pipes aufteilen, um die einzelnen Test-Strings zu erhalten
  9. Zeigen Sie den Test-Header an: "Testing stringutil functions:"
  10. Demonstrieren Sie für jeden Test-String alle Funktionen:
    • "Testing with: \"[test_string]\""
    • " stringutil.Reverse: \"[reversed_result]\""
    • " stringutil.ToUpper: \"[uppercase_result]\""
    • " stringutil.ToLower: \"[lowercase_result]\""
    • " stringutil.Length: [length_result]"
  11. Berechnen und zeigen Sie Statistiken an:
    • "=== STATISTICS ==="
    • "Total test strings processed: [number_of_test_strings]"
    • "Functions available in package: [number_of_functions_from_first_input]"
    • "Total function calls made: [total_function_calls]"
  12. Zeigen Sie den längsten und den kürzesten String an:
    • "Longest string: \"[longest_string]\" (length: [length])"
    • "Shortest string: \"[shortest_string]\" (length: [length])"
  13. Zeigen Sie die Abschlussmeldung an: "Package demonstration completed successfully"

Verwenden Sie das strings-Paket, um Eingabestrings aufzuteilen und Text zu manipulieren, und das fmt-Paket für die formatierte Ausgabe. Für die Reverse-Funktion müssen Sie den String in ein Slice von Runes umwandeln, die Reihenfolge umkehren und wieder in einen String zurückverwandeln. Denken Sie daran, dass alle exportierten Funktionen mit Großbuchstaben beginnen müssen, um von anderen Paketen aus zugänglich zu sein. Diese Herausforderung zeigt, wie man wiederverwendbare Utility-Pakete erstellt und zusammengehörige Funktionalitäten organisiert.

Probier es selbst

package main

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

// TODO: Erstellen Sie hier Ihre stringutil-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 Reverse(s string) string {
//     // In Runen konvertieren, umkehren, zurück in String konvertieren
// }

// func ToUpper(s string) string {
//     // strings.ToUpper verwenden
// }

// func ToLower(s string) string {
//     // strings.ToLower verwenden
// }

// func Length(s string) int {
//     // len(s) zurückgeben
// }

func main() {
	// Eingabe mit bufio.Scanner lesen, um Leerzeichen korrekt zu verarbeiten
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	functionSpecs := scanner.Text()
	
	scanner.Scan()
	testStrings := scanner.Text()
	
	// Funktionsspezifikationen parsen
	funcList := strings.Split(functionSpecs, ",")
	
	// Test-Strings parsen
	testList := strings.Split(testStrings, "|")
	
	// TODO: Schreiben Sie Ihren Code unten
	// 1. Paket-Header anzeigen
	// 2. Verfügbare Funktionen aus funcList anzeigen (Array-Längen prüfen)
	// 3. Alle Funktionen mit jedem Test-String testen
	// 4. Statistiken berechnen und anzeigen
	// 5. Längste/kürzeste Strings finden und anzeigen (prüfen, ob testList Elemente enthält)
	// 6. Abschlussmeldung anzeigen
	
	// Denken Sie daran, Ihre stringutil-Paketfunktionen zu verwenden, wie:
	// Reverse(testString)
	// ToUpper(testString)
	// ToLower(testString)
	// Length(testString)
}

Alle Lektionen in Logik & Ablauf