模仿Java Stream API 運算元組/切片
https://gist.github.com/songtianyi/ac1c3d753abad85b226ed615b0f0ec80
package main
import (
"fmt"
"reflect"
)
type Data struct {
foo string
bar string
enabled bool
}
type stream struct {
data []interface{}
}
// copy struct slice to slice of interface
func NewStream(data interface{}) *stream {
s := reflect.ValueOf(data)
// check
if s.Kind() != reflect.Slice {
panic("not slice :(")
}
ret := make([]interface{}, s.Len())
for i := 0; i < s.Len(); i++ {
ret[i] = s.Index(i).Interface()
}
return &stream{
data: ret,
}
}
// filter function
type boolFilter func(d interface{}) bool
func (s *stream) filter(f boolFilter) *stream {
a := make([]interface{}, 0)
for _, d := range s.data {
if f(d) {
a = append(a, d)
}
}
s.data = a
return s
}
func (s *stream) count() int {
return len(s.data)
}
func main() {
var data = []*Data{
{
"music",
"on",
true,
},
{
"dota",
"game",
false,
},
}
// --- 類似 Java8 Stream API
out := NewStream(data).filter(
// filter by field foo
func(d interface{}) bool {
return d.(*Data).foo == "music"
}).count()
// ---
fmt.Println(out)
}
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- JavaScript運算元組JavaScript
- samber/lo 提供了豐富的函式用於運算元組和切片函式
- python3 筆記13.列表元組的切片和支援的運算方法Python筆記
- js 方法(運算元組為主JS
- js運算元組中資料排列組合JS
- JavaScript 資料處理 - 運算元組JavaScript
- java 運算元據庫備份Java
- Java Stream API groupingBy()介紹JavaAPI
- spark-運算元-分割槽運算元Spark
- 運算元
- Java8中的Stream APIJavaAPI
- Java8 Stream常用API整理JavaAPI
- Java8的Stream API使用JavaAPI
- java .stream(). 使用介紹 Streams APIJavaAPI
- java8 Stream APi 入門JavaAPI
- Java8新特性--Stream APIJavaAPI
- Java 8 Stream API 轉換到 Kotlin 集合APIJavaAPIKotlin
- 使用運算元控制公式運算公式
- Python 影像處理 OpenCV (12): Roberts 運算元、 Prewitt 運算元、 Sobel 運算元和 Laplacian 運算元邊緣檢測技術PythonOpenCV
- Java8 - Stream API快速入門JavaAPI
- Java 10中Stream API不可變集合JavaAPI
- 7個Java Stream API面試題JavaAPI面試題
- Java 8 Stream Api 中的 peek 操作JavaAPI
- RDD運算元
- 【Spark篇】---SparkStreaming中運算元中OutPutOperator類運算元Spark
- Stream APIAPI
- vue的資料劫持以及運算元組的坑Vue
- Java Stream API:實現 Kruskal 演算法JavaAPI演算法
- Go語言實現的Java Stream APIGoJavaAPI
- Java8中的 lambda 和Stream APIJavaAPI
- 運算元據庫
- python運算元據Python
- Java 8 Stream API: 深入理解與高效使用JavaAPI
- 運算元據庫表
- MySQL DML運算元據MySql
- jmeter運算元據庫JMeter
- DDL:運算元據庫
- onnx 運算元定義
- 什麼是運算元?