Reactive programming in Go con RxGo
RxGo è una implementazione per Go di ReactiveX, un API per la programmazione asincrona.
In questo articolo vediamo un esempio del suo utilizzo.
Premetto che su Go non ho approfondito molto per mancanza di tempo; mi sono solo fatto un'idea.
Per installare la libreria:
$ go get -u github.com/reactivex/rxgo/v2
$ go mod tidy
Qui sotto un esempio di codice basico per cominciare:
package main
import (
"context"
"fmt"
"github.com/reactivex/rxgo/v2"
)
type Persona struct {
ID int
Nome string
Cognome string
Eta int
}
func main() {
observable := rxgo.Just(1, 2, 3, 4, 5, 6)().
Map(per10).
Filter(maggioreDi20)
for item := range observable.Observe() {
if item.Error() {
fmt.Println("Errore: ", item.E)
}
fmt.Println(item.V)
}
}
func per10(ctx context.Context, i interface{}) (interface{}, error) {
return i.(int) * 10, nil
}
func maggioreDi20(i interface{}) bool {
return i.(int) > 20
}
Le due funzioni richiamate sono semplici:
- la prima moltiplica il valore per 10
- la seconda filtra prendendo solo i valori maggiore di 20
Enjoy!
go reactivex rxgo
Commentami!