1. 程式人生 > >go-flow原始碼解讀心得

go-flow原始碼解讀心得

go-flow

go get github.com/kamildrazkiewicz/go-flow

使用方法

   func main() {
	f1 := func(r map[string]interface{}) (interface{}, error) {
		fmt.Println("function1 started")
		time.Sleep(time.Millisecond * 1000)
		return 1, nil
	}

	f2 := func(r map[string]interface{}) (interface{}, error) {
		time.
Sleep(time.Millisecond * 1000) fmt.Println("function2 started", r["f1"]) return "some results", nil } f3 := func(r map[string]interface{}) (interface{}, error) { fmt.Println("function3 started", r["f1"]) return nil, nil } f4 := func(r map[string]interface{}) (interface{}, error) { fmt.Println
("function4 started", r) return nil, nil } res, err := goflow.New(). Add("f1", nil, f1). Add("f2", []string{"f1"}, f2). Add("f3", []string{"f1"}, f3). Add("f4", []string{"f2", "f3"}, f4). Do() fmt.Println(res, err) } 結果: function1 started function3 started 1 function2 started 1
function4 started map[f2:some results f3:<nil>] map[f1:1 f2:some results f3:<nil> f4:<nil>] <nil>

內部資料結構

相關推薦

go-flow原始碼解讀心得

go-flow go get github.com/kamildrazkiewicz/go-flow 使用方法 func main() { f1 := func(r map[string]interface{}) (interface{}, error) { fmt.

go Ring(環形連結串列)原始碼解讀與應用

首先是環形連結串列的結構與初初始化 type Ring struct { next, prev *Ring Value interface{} // for use by client; untouched by this library } func (r

go中waitGroup原始碼解讀

- [waitGroup原始碼刨銑](#waitgroup%E6%BA%90%E7%A0%81%E5%88%A8%E9%93%A3) - [前言](#%E5%89%8D%E8%A8%80) - [WaitGroup實現](#waitgroup%E5%AE%9E%E7%8E%B0) -

go中errgroup原始碼解讀

- [errgroup](#errgroup) - [前言](#%E5%89%8D%E8%A8%80) - [如何使用](#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8) - [實現原理](#%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%8

go中sync.Cond原始碼解讀

- [sync.Cond](#synccond) - [前言](#%E5%89%8D%E8%A8%80) - [什麼是sync.Cond](#%E4%BB%80%E4%B9%88%E6%98%AFsynccond) - [看下原始碼](#%E7%9C%8B%E4%B8%8B%E6%BA%90

go中sync.Mutex原始碼解讀

- [互斥鎖](#%E4%BA%92%E6%96%A5%E9%94%81) - [前言](#%E5%89%8D%E8%A8%80) - [什麼是sync.Mutex](#%E4%BB%80%E4%B9%88%E6%98%AFsyncmutex) - [分析下原始碼](#%E5%88%86%

go中semaphore(訊號量)原始碼解讀

- [執行時訊號量機制 semaphore](#%E8%BF%90%E8%A1%8C%E6%97%B6%E4%BF%A1%E5%8F%B7%E9%87%8F%E6%9C%BA%E5%88%B6-semaphore) - [前言](#%E5%89%8D%E8%A8%80) - [作用是什麼](#

yolo v2 損失函式原始碼解讀

前提說明:     1, 關於 yolo 和 yolo v2 的詳細解釋請移步至如下兩個連結,或者直接看論文(我自己有想寫 yolo 的教程,但思前想後下面兩個連結中的文章質量實在是太好了_(:з」∠)_)         yo

【React原始碼解讀】- 元件的實現

前言 react使用也有一段時間了,大家對這個框架褒獎有加,但是它究竟好在哪裡呢? 讓我們結合它的原始碼,探究一二!(當前原始碼為react16,讀者要對react有一定的瞭解) 回到最初 根據react官網上的例子,快速構建react專案 npx create-react-app

【1】pytorch torchvision原始碼解讀之Alexnet

最近開始學習一個新的深度學習框架PyTorch。 框架中有一個非常重要且好用的包:torchvision,顧名思義這個包主要是關於計算機視覺cv的。這個包主要由3個子包組成,分別是:torchvision.datasets、torchvision.models、torchvision.trans

Set介面_HashSet常用方法_JDK原始碼解讀

Set 介面繼承自 Collection ,Set 沒有新增方法,方法和 Collection 保持一致, Set 容器的特點:無序,不可重複,無序指Set 中的元素沒有索引,我們只能遍歷查詢,不重複指不允許加入重複的元素,更確切的說,新元素如果和Set 中某個元素通過 equals() 方

vux之x-input使用以及原始碼解讀

前言 近期專案中使用的vux中的input,以及使用自定義校驗規則和動態匹配錯誤提示,有時間記錄下自己的使用經歷和原始碼分析。希望大家多多指正,留言區發表自己寶貴的建議。 詳解 列舉官方文件中常用的幾個屬性的使用方法,程式碼如下 <group ref="group">

react-redux connect原始碼解讀

今天看了下react-redux的原始碼,主要來看下connect的方法 首先找到connect的入口檔案。在src/index.js下找到。對應connect資料夾下的connect.js檔案。 大致說下原始碼connect流程 connect.js對外暴露是通過ex

java原始碼解讀之HashMap

1:首先下載openjdk(http://pan.baidu.com/s/1dFMZXg1),把原始碼匯入eclipse,以便看到jdk原始碼            Windows-Prefe

以太坊原始碼解讀(5)BlockChain類的解析及NewBlockChain()分析

一、blockchain的資料結構 type BlockChain struct { chainConfig *params.ChainConfig // 初始化配置 cacheConfig *CacheConfig // 快取配置 db ethdb.Databas

以太坊原始碼解讀(4)Block類及其儲存

一、Block類 type Block struct { /******header*******/ header *Header /******header*******/ /******body*********/ uncle

Hystrix之@EnableCircuitBreaker原始碼解讀

Hystrix是一個供分散式系統使用,提供延遲和容錯功能,保證複雜的分佈系統在面臨不可避免的失敗時,仍能有其彈性。 比如系統中有很多服務,當某些服務不穩定的時候,使用這些服務的使用者執行緒將會阻塞,如果沒有隔離機制,系統隨時就有可能會掛掉,從而帶來很大的風險。 SpringCloud使用Hy

String的valueOf方法原始碼解讀

valueOf 中的祕密 String中的valueOf方法大致可以分為三種: String.valueOf(Object)、String.valueOf(char[])、String.valueOf(基本資料型別) 案例: Integer arg = null; St

nodejs---require() 原始碼解讀

2009年,Node.js 專案誕生,所有模組一律為 CommonJS 格式。 時至今日,Node.js 的模組倉庫 npmjs.com ,已經存放了15萬個模組,其中絕大部分都是 CommonJS 格式。 這種格式的核心就是 require

深度學習之---yolo,kmeans計算anchor框原始碼解讀

k-means原理 K-means演算法是很典型的基於距離的聚類演算法,採用距離作為相似性的評價指標,即認為兩個物件的距離越近,其相似度就越大。該演算法認為簇是由距離靠近的物件組成的,因此把得到緊湊且獨立的簇作為最終目標。 問題 K-Means演算法主要解決的問題如下圖所示。我們可以看到