Menu
Coddy logo textTech

Einfacher Zahlen-Validator

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

challenge icon

Aufgabe

Einfach

Erstelle ein Zahlenvalidierungssystem, das demonstriert, wie Schnittstellen Verhaltensverträge definieren, während benutzerdefinierte Fehler aussagekräftiges Feedback liefern, wenn die Validierung fehlschlägt. Diese Aufgabe testet deine Fähigkeit, Schnittstellen zu erstellen, sie mit benutzerdefinierten Typen zu implementieren und Validierungsfehler angemessen zu behandeln.

Du erhältst zwei Eingaben:

  • Eine Zeichenkette mit durch Kommas getrennten Zahlen, die validiert werden sollen (z. B. "45,150,25,200,75")
  • Eine Zeichenkette mit dem Validierungsbereich im Format "min:max" (z. B. "1:100")

Deine Aufgabe ist es:

  1. Eine Validator-Schnittstelle mit einer einzigen Methode zu definieren: Validate() error
  2. Einen benutzerdefinierten Fehlertyp namens ValidationError als Struct mit zwei Feldern zu erstellen: Value (int) und Message (string)
  3. Die Methode Error() string für ValidationError zu implementieren, die die Nachricht im Format "Validation failed: [message] (value: [value])" zurückgibt
  4. Ein NumberValidator-Struct mit drei Feldern zu erstellen: Number (int), Min (int) und Max (int)
  5. Die Methode Validate() error für NumberValidator zu implementieren, die:
    • nil zurückgibt, wenn sich die Zahl innerhalb des gültigen Bereichs befindet (einschließlich der Grenzen)
    • Einen ValidationError mit der Nachricht "number below minimum range" zurückgibt, wenn die Zahl kleiner als das Minimum ist
    • Einen ValidationError mit der Nachricht "number above maximum range" zurückgibt, wenn die Zahl größer als das Maximum ist
  6. Die erste Eingabe durch Aufteilen an den Kommas zu verarbeiten, um einzelne Zahlenzeichenketten zu erhalten
  7. Die zweite Eingabe durch Aufteilen an den Doppelpunkten zu verarbeiten, um Minimal- und Maximalwerte zu extrahieren
  8. Alle Zeichenkettenwerte mithilfe des strconv-Pakets in Ganzzahlen umzuwandeln
  9. Die Validierungsüberschrift anzuzeigen: "=== NUMBER VALIDATION SYSTEM ==="
  10. Die Validierungsparameter anzuzeigen: "Validating numbers in range [min] to [max]"
  11. Für jede Zahl:
    • Eine NumberValidator-Instanz mit der Zahl und den Bereichswerten zu erstellen
    • Die Methode Validate() für den Validator aufzurufen
    • Wenn die Validierung erfolgreich ist (der Fehler nil ist), Folgendes anzuzeigen: "✓ [number] is valid"
    • Wenn die Validierung fehlschlägt (der Fehler nicht nil ist), Folgendes anzuzeigen: "✗ [error_message]"
  12. Die Validierungszusammenfassung anzuzeigen:
    • "=== VALIDATION SUMMARY ==="
    • "Total numbers checked: [total_count]"
    • "Valid numbers: [valid_count]"
    • "Invalid numbers: [invalid_count]"
  13. Die Abschlussnachricht anzuzeigen: "Number validation completed successfully"

Verwende das strings-Paket, um Eingabezeichenketten aufzuteilen, das strconv-Paket, um Zeichenketten in Ganzzahlen umzuwandeln, und das fmt-Paket für die formatierte Ausgabe. Diese Aufgabe demonstriert, wie flexible Validierungssysteme mithilfe von Schnittstellen erstellt werden können, während benutzerdefinierte Fehlertypen detaillierte Fehlerinformationen bereitstellen.

Probier es selbst

package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	// Eingabe lesen
	var numbersInput string
	var rangeInput string
	fmt.Scanln(&numbersInput)
	fmt.Scanln(&rangeInput)
	
	// Eingaben parsen
	numberStrings := strings.Split(numbersInput, ",")
	rangeParts := strings.Split(rangeInput, ":")
	
	// Bereichswerte in Ganzzahlen umwandeln
	min, _ := strconv.Atoi(rangeParts[0])
	max, _ := strconv.Atoi(rangeParts[1])
	
	// TODO: Schreiben Sie Ihren Code unten
	// 1. Definieren Sie das Validator-Interface
	// 2. Erstellen Sie das ValidationError-Struct und implementieren Sie die Error()-Methode
	// 3. Erstellen Sie das NumberValidator-Struct und implementieren Sie die Validate()-Methode
	// 4. Verarbeiten Sie jede Zahl und validieren Sie diese
	// 5. Ergebnisse und Zusammenfassung anzeigen
	
	// Validierungs-Header anzeigen
	fmt.Println("=== NUMBER VALIDATION SYSTEM ===")
	fmt.Printf("Validating numbers in range %d to %d\n", min, max)
	
	// Hier jede Zahl verarbeiten
	
	// Validierungs-Zusammenfassung anzeigen
	fmt.Println("=== VALIDATION SUMMARY ===")
	// Hier Zusammenfassungs-Ausgabe hinzufügen
	
	fmt.Println("Number validation completed successfully")
}

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Go-Compiler