Skip to content

Commit f11bff5

Browse files
committed
Update docs.
1 parent d31b191 commit f11bff5

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

README.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,14 @@ Thus I implemented fpGo. I hope you would like it :)
4444

4545
* Java8Stream-like Collection
4646

47+
* Queue (LinkedListQueue/ChannelQueue/BufferedChannelQueue/ConcurrentQueue)
48+
4749
* PythonicGenerator-like Coroutine(yield/yieldFrom)
4850

4951
* Akka/Erlang-like Actor model(send/receive/spawn/states)
5052

53+
* **network/SimpleHTTP** inspired by [Retrofit](https://github.com/square/retrofit)
54+
5155
# Special thanks
5256
* fp functions(Dedupe/Difference/Distinct/IsDistinct/DropEq/Drop/DropLast/DropWhile/IsEqual/IsEqualMap/Every/Exists/Intersection/Keys/Values/Max/Min/MinMax/Merge/IsNeg/IsPos/PMap/Range/Reverse/Minus/Some/IsSubset/IsSuperset/Take/TakeLast/Union/IsZero/Zip/GroupBy/UniqBy/Flatten/Prepend/Partition/Tail/Head/SplitEvery)
5357
* Credit: https://github.com/logic-building/functional-go
@@ -143,6 +147,64 @@ for _, v := range s.ToArray() {
143147
fmt.Println(tempString) // tempString would be "1234"
144148
```
145149

150+
## Queue(LinkedListQueue/ChannelQueue/BufferedChannelQueue/ConcurrentQueue) (inspired by Collection libs)
151+
152+
### LinkedListQueue(Shift/Unshift/Push/Pop), ConcurrentQueue(inspired by Java)
153+
154+
Example:
155+
156+
```go
157+
var queue Queue
158+
var stack Stack
159+
var err error
160+
var result interface{}
161+
162+
linkedListQueue := NewLinkedListQueue()
163+
queue = linkedListQueue
164+
stack = linkedListQueue
165+
concurrentQueue := NewConcurrentQueue(queue)
166+
167+
// As a Queue, Put(val) in the TAIL and Take() in the HEAD
168+
err = queue.Offer(1)
169+
err = queue.Offer(2)
170+
err = queue.Offer(3)
171+
result, err = queue.Poll() // Result should be 1
172+
result, err = queue.Poll() // Result should be 2
173+
result, err = queue.Poll() // Result should be 3
174+
result, err = queue.Poll() // Err: ErrQueueIsEmpty
175+
176+
// As a Stack, Push(val) & Pop() in the TAIL.
177+
err = stack.Push(1)
178+
err = stack.Push(2)
179+
err = stack.Push(3)
180+
result, err = stack.Pop() // Result should be 3
181+
result, err = stack.Pop() // Result should be 2
182+
result, err = stack.Pop() // Result should be 1
183+
result, err = stack.Pop() // Err: ErrStackIsEmpty
184+
```
185+
186+
### BufferedChannelQueue(Offer/Take/TakeWithTimeout)
187+
188+
Example:
189+
190+
```go
191+
var err error
192+
var result interface{}
193+
var timeout time.Duration
194+
195+
bufferedChannelQueue := NewBufferedChannelQueue(3, 10000, 100)
196+
bufferedChannelQueue.SetLoadFromPoolDuration(time.Millisecond / 10)
197+
bufferedChannelQueue.SetFreeNodeHookPoolIntervalDuration(1 * time.Millisecond)
198+
199+
err = queue.Offer(1)
200+
err = queue.Offer(2)
201+
err = queue.Offer(3)
202+
timeout = 1 * time.Millisecond
203+
result, err = bufferedChannelQueue.TakeWithTimeout(timeout) // Result should be 1
204+
result, err = bufferedChannelQueue.TakeWithTimeout(timeout) // Result should be 2
205+
result, err = bufferedChannelQueue.TakeWithTimeout(timeout) // Result should be 3
206+
```
207+
146208
## Actor (inspired by Akka/Erlang)
147209

148210
### Actor common(send/receive/spawn/states)

0 commit comments

Comments
 (0)