模仿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
相關文章
- java反射——運算元組Java反射
- samber/lo 提供了豐富的函式用於運算元組和切片函式
- python3 筆記13.列表元組的切片和支援的運算方法Python筆記
- js運算元組中資料排列組合JS
- js 方法(運算元組為主JS
- JS中運算元組的方法JS
- Java 8 Streams API:對Stream分組和分割槽JavaAPI
- JavaScript 資料處理 - 運算元組JavaScript
- Java的&運算子作用於boolean運算元JavaBoolean
- java 運算元據庫備份Java
- spark-運算元-分割槽運算元Spark
- Java中 使用 Math 類運算元據Java
- 使用運算元控制公式運算公式
- Java8 Lambda表示式與Stream API (二): Stream API的使用JavaAPI
- vue的資料劫持以及運算元組的坑Vue
- Java8的Stream API使用JavaAPI
- Java8新特性--Stream APIJavaAPI
- Java8 Stream常用API整理JavaAPI
- Java8中的Stream APIJavaAPI
- Java 8新特性(二):Stream APIJavaAPI
- java8 Stream APi 入門JavaAPI
- 7個Java Stream API面試題JavaAPI面試題
- java .stream(). 使用介紹 Streams APIJavaAPI
- Java學習--使用 Math 類運算元據Java
- 【OpenCV】影像變換(二)邊緣檢測:梯度運算元、Sobel運算元和Laplace運算元OpenCV梯度
- Python 影像處理 OpenCV (12): Roberts 運算元、 Prewitt 運算元、 Sobel 運算元和 Laplacian 運算元邊緣檢測技術PythonOpenCV
- 【Spark篇】---SparkStreaming中運算元中OutPutOperator類運算元Spark
- 運算元據庫
- Stream APIAPI
- Java8 - Stream API快速入門JavaAPI
- Java 8 Stream Api 中的 peek 操作JavaAPI
- Java Stream API groupingBy()介紹JavaAPI
- Java 10中Stream API不可變集合JavaAPI
- Java 8 Stream API 轉換到 Kotlin 集合APIJavaAPIKotlin
- Spark運算元篇 --Spark運算元之aggregateByKey詳解Spark
- Spark運算元篇 --Spark運算元之combineByKey詳解Spark
- java中與運算,或運算,異或運算,取反運算Java
- 運算元據庫表