Ein Interface beschreibt Methoden; jeder Typ, der diese Methoden hat, erfüllt es automatisch (ohne implements). Goroutines sind sehr leichte Nebenläufigkeit: go f() startet f parallel. Channels (chan) übertragen Werte sicher zwischen Goroutines.
Mit sync.WaitGroup wartest du, bis Goroutines fertig sind.
type Formen interface {
Flaeche() float64
}
type Quadrat struct{ Seite float64 }
func (q Quadrat) Flaeche() float64 { return q.Seite * q.Seite }
func main() {
var f Formen = Quadrat{3}
fmt.Println(f.Flaeche()) // 9
kanal := make(chan string)
go func() { kanal <- "fertig" }()
fmt.Println(<-kanal)
}Merke
Interfaces werden implizit erfüllt
go f()startet eine GoroutineChannels übertragen Werte zwischen Goroutines
Aufgabe
Starte drei Goroutines, die je eine Zahl in einen Channel schreiben, und lies alle aus.