07: Demos

main
Teena Steger 2026-04-28 13:05:20 +02:00
parent 277cd15541
commit 6f4035aef8
8 changed files with 222 additions and 0 deletions

View File

@ -0,0 +1,26 @@
package main
import "fmt"
type Person struct {
Name string
Age int
}
// Wert-Receiver: arbeitet auf einer Kopie
func (p Person) Greet() {
fmt.Println("Hallo,", p.Name)
}
// Zeiger-Receiver: kann das Original ändern
func (p *Person) Birthday() {
p.Age++
}
func main() {
a := Person{Name: "Karl", Age: 30}
a.Greet() // Ausgabe: Hallo, Karl
a.Birthday() // Alter wird erhöht
fmt.Println(a.Age) // Ausgabe: 31
}

View File

@ -0,0 +1,18 @@
package main
import (
"fmt"
"net/http"
)
type helloHandler int
func (hello helloHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World %d!", hello)
}
func main() {
var world helloHandler
world = 42
http.ListenAndServe("localhost:8080", world)
}

View File

@ -0,0 +1,19 @@
package main
import (
"net/http"
)
type respExampleHandler int
func (hello respExampleHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.Header().Set("my-http-header", "Ein beliebiger Text")
w.Header().Set("Content-Type", "text/html; charset=utf-8")
w.WriteHeader(http.StatusFound)
w.Write([]byte("<h1>Dies ist eine HTML-Überschrift<h1>"))
}
func main() {
var r respExampleHandler
http.ListenAndServe("localhost:8080", r)
}

View File

@ -0,0 +1,36 @@
package main
import (
"fmt"
"net/http"
)
type reqExampleHandler int
func (hello reqExampleHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodGet {
http.Error(w, "Only GET requests are allowed", http.StatusMethodNotAllowed)
return
}
fmt.Println("Method:", r.Method)
fmt.Println("URL:", r.URL.String())
fmt.Println("Host:", r.Host)
fmt.Println("Accept-Header", r.Header.Get("Accept"))
queryParams := r.URL.Query()
fmt.Println("Query Parameters:")
for key, values := range queryParams {
for _, value := range values {
fmt.Printf(" %s = %s\n", key, value)
}
}
w.Write([]byte("<h1>GET: http.Request-Beispiel<h1>"))
}
func main() {
var r reqExampleHandler
http.ListenAndServe("localhost:8080", r)
}

View File

@ -0,0 +1,47 @@
package main
import (
"fmt"
"net/http"
)
type formExampleHandler int
func (formHandler formExampleHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Only POST requests are allowed", http.StatusMethodNotAllowed)
return
}
// Formulardaten parsen und Überprüfen, ob ungültige Formulardaten gesendet wurde
if err := r.ParseForm(); err != nil {
http.Error(w, "Fehler beim Parsen des Formulars", http.StatusBadRequest)
return
}
// Überprüfen, ob leeres Formular gesendet wurde
if len(r.PostForm) == 0 {
http.Error(w, "Kein POST-Formular gesendet", http.StatusBadRequest)
return
}
// Zugriff auf PostForm-Daten
// string mit Wert des Feldes "name"
name := r.PostForm.Get("name")
// []string mit allen ausgewählten Werten der Checkbox "hobby"
hobbies := r.PostForm["hobby"]
// Ausgabe der Werte
fmt.Fprintf(w, "Name: %s\n", name)
fmt.Fprintf(w, "Hobbies:\n")
for _, h := range hobbies {
fmt.Fprintf(w, "- %s\n", h)
}
}
func main() {
var r formExampleHandler
http.ListenAndServe("localhost:8080", r)
}

View File

@ -0,0 +1,28 @@
package main
import (
"encoding/json"
"net/http"
)
type jsonEncodeHandler int
type User struct {
Firstname string `json:"firstname"`
Lastname string `json:"lastname"`
Age int `json:"age"`
}
func (jsonHandler jsonEncodeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
mariam := User{
Firstname: "Mariam",
Lastname: "Okonkwo",
Age: 25,
}
json.NewEncoder(w).Encode(mariam)
}
func main() {
var enc jsonEncodeHandler
http.ListenAndServe("localhost:8080", enc)
}

View File

@ -0,0 +1,26 @@
package main
import (
"encoding/json"
"fmt"
"net/http"
)
type jsonDecodeHandler int
type User struct {
Firstname string `json:"firstname"`
Lastname string `json:"lastname"`
Age int `json:"age"`
}
func (jsonHandler jsonDecodeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
var user User
json.NewDecoder(r.Body).Decode(&user)
fmt.Fprintf(w, "%s %s is %d years old!", user.Firstname, user.Lastname, user.Age)
}
func main() {
var dec jsonDecodeHandler
http.ListenAndServe("localhost:8080", dec)
}

View File

@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Einfaches Formular für Backend</title>
</head>
<body>
<form method="POST" action="http://localhost:8080">
<label for="nameLabel">Name</label>
<input name="name" id="nameLabel" />
<p>Hobbies:
<label><input type="checkbox" name="hobby" value="lesen"> Lesen</label>
<label><input type="checkbox" name="hobby" value="kochen"> Kochen</label>
<label><input type="checkbox" name="hobby" value="wandern"> Wandern</label>
</p>
<button type="submit">Absenden</button>
</form>
</body>
</html>