https://github.com/yale8848/stream
Golang stream lib is like Java 8 stream. Only handle slice or array.
https://github.com/yale8848/stream
array golang java8-stream slice stream-api
Last synced: 9 months ago
JSON representation
Golang stream lib is like Java 8 stream. Only handle slice or array.
- Host: GitHub
- URL: https://github.com/yale8848/stream
- Owner: yale8848
- Created: 2019-02-25T08:04:54.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2022-01-20T06:52:20.000Z (about 4 years ago)
- Last Synced: 2025-03-31T13:15:16.076Z (10 months ago)
- Topics: array, golang, java8-stream, slice, stream-api
- Language: Go
- Homepage:
- Size: 26.4 KB
- Stars: 9
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Golang stream lib is like Java 8 stream. Only handle slice or array.
## get
```
go get github.com/yale8848/stream@v1.3.1
```
## demo
```go
var data =[]person{{age:11,name:"alice"},{age:19,name:"pig"},{age:5,name:"cat"},{age:21,name:"bob"}}
st,_:=stream.Of(data)
st.Filter(func(v stream.T) bool {
p:=v.(person)
fmt.Printf("Filter %v\r\n",v)
return p.age>10
}).Peek(func(v stream.T) {
fmt.Printf("Peek %v\r\n",v)
}).Skip(1).Map(func(v stream.T) stream.T {
p:=v.(person)
p.name = strings.ToUpper(p.name)
return p
}).Sorted(func(v1, v2 stream.T) bool {
s1:=v1.(person)
s2:=v2.(person)
return strings.Compare(s1.name,s2.name)<0
}).Limit(2).Distinct(func(v stream.T) stream.T {
p:=v.(person)
fmt.Printf("Distinct %v\r\n",v)
return p.name
}).ForEach(func(v stream.T) bool {
fmt.Printf("ForEach %v\r\n",v)
return true
})
```
## Todo
### Intermediate
- [x] Filter
- [x] Map
- [x] Peek
- [x] Sorted
- [x] Distinct
- [x] Skip
- [x] Limit
- [ ] unordered
- [ ] parallel
- [ ] sequential
### Terminal
- [x] ForEach
- [ ] ForEachOrdered
- [ ] toArray
- [x] Collect
- [x] Min
- [x] Max
- [x] Count
- [ ] iterator
- [x] Sum
### Short-circuiting
- [x] AnyMatch
- [x] AllMatch
- [x] NoneMatch
- [x] FindFirst
- [ ] findAny
## ref
http://www.cnblogs.com/CarpenterLee/p/6637118.html