Go 语言的 Reactive 扩展 RxGo

码农软件 · 软件分类 · 常用工具包 · 2019-08-13 23:42:32

软件介绍

RxGo 是 Go 语言的 Reactive 扩展。

安装

go get -u github.com/jochasinga/rxgo

用法

watcher := observer.Observer{

    // Register a handler function for every next available item.
    NextHandler: func(item interface{}) {
        fmt.Printf("Processing: %v\n", item)
    },

    // Register a handler for any emitted error.
    ErrHandler: func(err error) {
        fmt.Printf("Encountered error: %v\n", err)
    },

    // Register a handler when a stream is completed.
    DoneHandler: func() {
        fmt.Println("Done!")
    },
}

it, _ := iterable.New([]interface{}{1, 2, 3, 4, errors.New("bang"), 5})
source := observable.From(it)
sub := source.Subscribe(watcher)

// wait for the async operation
<-sub

以上将:

  • 将切片中每个数字的格式字符串 print 为4。

  • print 错误“bang”

重要的是要记住,只有一个 OnError 或 OnDone 可以在 stream 中调用。 如果 stream 中有错误,处理停止,OnDone 将永远不会被调用,反之亦然。

概念是将所有“side effects”分组到这些处理程序中,让一个 Observer 或任何 EventHandler 处理它们。

package main
import (
    "fmt"
    "time"

    "github.com/jochasinga/rx"
    "github.com/jochasinga/rx/handlers"
)

func main() {

    score := 9

    onNext := handlers.NextFunc(func(item interface{}) {
        if num, ok := item.(int); ok {
            score += num
        }
    })

    onDone := handlers.DoneFunc(func() {
        score *= 2
    })

    watcher := observer.New(onNext, onDone)

    // Create an `Observable` from a single item and subscribe to the observer.
    sub := observable.Just(1).Subscribe(watcher)
    <-sub

    fmt.Println(score) // 20
}

本文地址:https://codercto.com/soft/d/12315.html

经济学原理(第7版):微观经济学分册+宏观经济学分册(套装共2册)

经济学原理(第7版):微观经济学分册+宏观经济学分册(套装共2册)

曼昆 (N.Gregory Mankiw) / 梁小民、梁砾 / 北京大学出版社 / 2015-5-1 / 128

《经济学原理(第7版):微观经济学分册+宏观经济学分册》是目前国内市场上最受欢迎的引进版经济学教材之一,其最大特点是它的“学生导向”,它更多地强调经济学原理的应用和政策分析,而非经济学模型。第7版在延续该书一贯风格的同时,对第6版作了全面修订和改进。大幅更新了“新闻摘录”“案例研究”等专栏,拓展了章后习题。一起来看看 《经济学原理(第7版):微观经济学分册+宏观经济学分册(套装共2册)》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换