package main // Observable is an element which can be observed type Observable[T any] interface { subscribe(o Observer[T]) unsubscribe(o Observer[T]) error notifySubscribers() } // Observer is an element which can observe an Observable type Observer[T any] interface { update(data T) }