mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 12:42:34 +02:00
remove old unused code
This commit is contained in:
parent
9d701ad671
commit
2ce1ceb460
3 changed files with 0 additions and 205 deletions
|
@ -1,69 +0,0 @@
|
|||
package functional
|
||||
|
||||
import "sync"
|
||||
|
||||
func ForEachKey[K comparable, V any](obj map[K]V, do func(K)) {
|
||||
for k := range obj {
|
||||
do(k)
|
||||
}
|
||||
}
|
||||
|
||||
func ForEachValue[K comparable, V any](obj map[K]V, do func(V)) {
|
||||
for _, v := range obj {
|
||||
do(v)
|
||||
}
|
||||
}
|
||||
|
||||
func ForEachKV[K comparable, V any](obj map[K]V, do func(K, V)) {
|
||||
for k, v := range obj {
|
||||
do(k, v)
|
||||
}
|
||||
}
|
||||
|
||||
func ParallelForEach[T any](obj []T, do func(T)) {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(len(obj))
|
||||
for _, v := range obj {
|
||||
go func(v T) {
|
||||
do(v)
|
||||
wg.Done()
|
||||
}(v)
|
||||
}
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func ParallelForEachKey[K comparable, V any](obj map[K]V, do func(K)) {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(len(obj))
|
||||
for k := range obj {
|
||||
go func(k K) {
|
||||
do(k)
|
||||
wg.Done()
|
||||
}(k)
|
||||
}
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func ParallelForEachValue[K comparable, V any](obj map[K]V, do func(V)) {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(len(obj))
|
||||
for _, v := range obj {
|
||||
go func(v V) {
|
||||
do(v)
|
||||
wg.Done()
|
||||
}(v)
|
||||
}
|
||||
wg.Wait()
|
||||
}
|
||||
|
||||
func ParallelForEachKV[K comparable, V any](obj map[K]V, do func(K, V)) {
|
||||
var wg sync.WaitGroup
|
||||
wg.Add(len(obj))
|
||||
for k, v := range obj {
|
||||
go func(k K, v V) {
|
||||
do(k, v)
|
||||
wg.Done()
|
||||
}(k, v)
|
||||
}
|
||||
wg.Wait()
|
||||
}
|
|
@ -1,127 +0,0 @@
|
|||
package functional
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type Slice[T any] struct {
|
||||
s []T
|
||||
mu sync.Mutex
|
||||
}
|
||||
|
||||
func NewSlice[T any]() *Slice[T] {
|
||||
return &Slice[T]{s: make([]T, 0)}
|
||||
}
|
||||
|
||||
func NewSliceN[T any](n int) *Slice[T] {
|
||||
return &Slice[T]{s: make([]T, n)}
|
||||
}
|
||||
|
||||
func NewSliceFrom[T any](s []T) *Slice[T] {
|
||||
return &Slice[T]{s: s}
|
||||
}
|
||||
|
||||
func (s *Slice[T]) Size() int {
|
||||
return len(s.s)
|
||||
}
|
||||
|
||||
func (s *Slice[T]) Empty() bool {
|
||||
return len(s.s) == 0
|
||||
}
|
||||
|
||||
func (s *Slice[T]) NotEmpty() bool {
|
||||
return len(s.s) > 0
|
||||
}
|
||||
|
||||
func (s *Slice[T]) Iterator() []T {
|
||||
return s.s
|
||||
}
|
||||
|
||||
func (s *Slice[T]) Get(i int) T {
|
||||
return s.s[i]
|
||||
}
|
||||
|
||||
func (s *Slice[T]) Set(i int, v T) {
|
||||
s.s[i] = v
|
||||
}
|
||||
|
||||
func (s *Slice[T]) Add(e T) *Slice[T] {
|
||||
s.s = append(s.s, e)
|
||||
return s
|
||||
}
|
||||
|
||||
func (s *Slice[T]) AddRange(other *Slice[T]) *Slice[T] {
|
||||
s.s = append(s.s, other.s...)
|
||||
return s
|
||||
}
|
||||
|
||||
func (s *Slice[T]) SafeAdd(e T) *Slice[T] {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
return s.Add(e)
|
||||
}
|
||||
|
||||
func (s *Slice[T]) SafeAddRange(other *Slice[T]) *Slice[T] {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
return s.AddRange(other)
|
||||
}
|
||||
|
||||
func (s *Slice[T]) Pop() T {
|
||||
v := s.s[len(s.s)-1]
|
||||
s.s = s.s[:len(s.s)-1]
|
||||
return v
|
||||
}
|
||||
|
||||
func (s *Slice[T]) SafePop() T {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
return s.Pop()
|
||||
}
|
||||
|
||||
func (s *Slice[T]) Remove(criteria func(T) bool) {
|
||||
for i, v2 := range s.s {
|
||||
if criteria(v2) {
|
||||
s.s = append(s.s[:i], s.s[i+1:]...)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Slice[T]) SafeRemove(criteria func(T) bool) {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
s.Remove(criteria)
|
||||
}
|
||||
|
||||
func (s *Slice[T]) ForEach(do func(T)) {
|
||||
for _, v := range s.s {
|
||||
do(v)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Slice[T]) Map(m func(T) T) *Slice[T] {
|
||||
n := make([]T, len(s.s))
|
||||
for i, v := range s.s {
|
||||
n[i] = m(v)
|
||||
}
|
||||
return &Slice[T]{s: n}
|
||||
}
|
||||
|
||||
func (s *Slice[T]) Filter(f func(T) bool) *Slice[T] {
|
||||
n := make([]T, 0)
|
||||
for _, v := range s.s {
|
||||
if f(v) {
|
||||
n = append(n, v)
|
||||
}
|
||||
}
|
||||
return &Slice[T]{s: n}
|
||||
}
|
||||
|
||||
func (s *Slice[T]) String() string {
|
||||
out, err := json.MarshalIndent(s.s, "", " ")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return string(out)
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
package strutils
|
||||
|
||||
import (
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/text/cases"
|
||||
|
@ -22,14 +21,6 @@ func Title(s string) string {
|
|||
return cases.Title(language.AmericanEnglish).String(s)
|
||||
}
|
||||
|
||||
func ExtractPort(fullURL string) (int, error) {
|
||||
url, err := url.Parse(fullURL)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return Atoi(url.Port())
|
||||
}
|
||||
|
||||
func ToLowerNoSnake(s string) string {
|
||||
return strings.ToLower(strings.ReplaceAll(s, "_", ""))
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue