Reactive programming in Go con RxGo

Mattepuffo's logo
Reactive programming in Go con RxGo

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!


Condividi

Commentami!