# Übungsblatt 07 ### Hinweise: - Aufgabe 1: Keine Abgabe erforderlich - Aufgabe 2 + 3: Abgabe erforderlich Im Normalfall ist **immer** eine Abgabe erforderlich, es sei denn es gibt einen expliziten Hinweis! ## 1. Go-Übung: Grundlagen _Keine Abgabe erforderlich_ **Aufgabenstellung**: Machen Sie sich mit den Grundlagen der Programmiersprache vertraut. #### Arbeitsschritte 1. Besuchen Sie die Webseite [Go by Example](https://gobyexample.com): **Go by Example** ist eine Einführung in Go anhand kommentierter Beispielprogramme. 2. Arbeiten Sie die Liste der Beispiele nacheinander durch. Folgende Themen werden (mindestens) empfohlen: - Hello World - Values - Variables - For - If/Else - Switch - Arrays - Slices - Maps - Functions - Multiple Return Values - Closures - Range over Built-in Types - Pointers - Structs - Methods - Interfaces - Enums - Errors ## 2. Go-Übung: Kommandozeilenprogramm **Aufgabenstellung**: Entwickeln Sie ein Kommandozeilenprogramm in Go, mit dem Nutzer:innen ihre persönliche Büchersammlung verwalten können. _Tipp: Schauen Sie sich vorher das Demo-Programm "taskmanager" an._ #### Arbeitsschritte Implementieren Sie ein Programm mit folgenden Funktionen: 1. **Buch hinzufügen** ```bash go run main.go book.go add "Titel" "Autor" ``` → Fügt ein neues Buch zur Sammlung hinzu. 2. **Bücher auflisten** ```bash go run main.go book.go list ``` → Zeigt alle Bücher mit ID, Titel, Autor und Lesestatus. 3. **Buch als gelesen markieren** ```bash go run main.go book.go read ``` → Markiert das Buch mit der angegebenen ID als gelesen. 4. **Persistenz** - Die Bücher sollen in einer Datei `books.json` gespeichert und beim Programmstart wieder geladen werden. - Verwenden Sie dafür das `encoding/json`-Paket und `os.ReadFile` / `os.WriteFile`. ### Hinweise - Verwenden Sie `struct` für die Buch- und Bibliotheksdaten. - Arbeiten Sie mit `slice` zur Verwaltung der Bücherliste. - Nutzen Sie Methoden zur Kapselung von Logik (z. B. `Add`, `MarkRead`, `Save`). - Behandeln Sie Fehler sinnvoll und benutzerfreundlich. - Strukturieren Sie Ihr Projekt in mindestens zwei Dateien (`main.go`, `book.go`). ## 3. Go-Übung: Formulardaten empfangen **Aufgabenstellung**: Erstellen Sie ein Webserver-Programm in Go, das auf `localhost:8080` Anfragen entgegennimmt. - Der Endpunkt nimmt die Formulardaten der Workshop-Anmeldung aus Übungsblatt 04 entgegen und gibt sie als Response zurück. - Nutzen Sie dazu gerne die zuvor von Ihnen in Übungsblatt 06 definierte SWAGGER-Schnittstelle. - Es sollen nur `POST`-Request erlaubt sein. Falls eine andere Methode verwendet wurde, soll der Status-Code 405 (Method not allowed) zurückgegeben werden. - Testen Sie Ihren Endpunkt mit Ihrem HTML-Formular. - Denken Sie daran sowohl in Ihrer SWAGGER-Schnittstelle als auch in Ihrem HTML-Formular den Endpunkt auf localhost:8080 abzuändern