generics

package
v0.0.2-alpha Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 30, 2024 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Overview

generics

泛型工具庫

數組與集合

Types:

// ZeroStruct 空結構
type ZeroStruct struct{}
// TList 列表
type TList[T comparable] []T
// TMap 字典
type TMap[K comparable, V any] map[K]V

Constraints:

// Zero 空結構對象
var Zero = ZeroStruct{}

Index

Constants

This section is empty.

Variables

View Source
var Zero = ZeroStruct{}

Zero 空結構對象

Functions

This section is empty.

Types

type LessFunc

type LessFunc = func(i, j int) bool

比較函數

func Ascending

func Ascending[T cmp.Ordered](list []T) LessFunc

Ascending 構造 LessFunc 用於升序排序

arr := []uint32{3, 1, 4, 1, 5, 9}
List(arr).Sort(Ascending(arr))

func Descending

func Descending[T cmp.Ordered](list []T) LessFunc

Descending 構造 LessFunc 用於降序排序

arr := []uint32{3, 1, 4, 1, 5, 9}
List(arr).Sort(Descending(arr))

type TList

type TList[T comparable] []T

TList 任意類型列表

func List

func List[T comparable](list []T) TList[T]

List 構造泛型列表

func (TList[T]) Distinct

func (list TList[T]) Distinct() (res TList[T])

Distinct 移除重複元素, 原始對象不可用

func (TList[T]) Empty

func (list TList[T]) Empty() bool

Empty 列表是否爲空

func (TList[T]) ForEach

func (list TList[T]) ForEach(handle func(index int, value T) error) (succeeded int, err error)

ForEach 遍歷處理所有鍵值對

func (TList[T]) Len

func (list TList[T]) Len() int

Len 返回長度

func (TList[T]) Root

func (list TList[T]) Root() []T

Root 獲取根對象

func (TList[T]) Sort

func (list TList[T]) Sort(less LessFunc) TList[T]

對列表排序, 包裝 sort.Slice

func (TList[T]) SortStable

func (list TList[T]) SortStable(less LessFunc) TList[T]

對列表排序, 包裝 sort.SliceStable

func (TList[T]) ToSet

func (list TList[T]) ToSet() (set TMap[T, ZeroStruct])

ToSet 轉換爲集合

type TMap

type TMap[K comparable, V any] map[K]V

TMap 泛型字典

func Map

func Map[K comparable, V any](m map[K]V) TMap[K, V]

List 構造泛型字典, 可安全傳入 nil 值

func Set

func Set[T comparable](m map[T]ZeroStruct) TMap[T, ZeroStruct]

Set 構造泛型集合, 可安全傳入 nil 值

func (TMap[K, V]) Delete

func (m TMap[K, V]) Delete(key K) TMap[K, V]

Delete 移除元素

func (TMap[K, V]) Empty

func (m TMap[K, V]) Empty() bool

Empty 字典是否爲空

func (TMap[K, V]) Filter

func (m TMap[K, V]) Filter(filter func(key K, value V) bool) TMap[K, V]

Filter 過濾元素, 不滿足的 filter 的鍵值對將被移除

func (TMap[K, V]) ForEach

func (m TMap[K, V]) ForEach(handle func(key K, value V) error) (succeeded int, err error)

ForEach 遍歷處理所有鍵值對

func (TMap[K, V]) Keys

func (m TMap[K, V]) Keys() (list TList[K])

Keys 返回所有鍵名列表

func (TMap[K, V]) Len

func (m TMap[K, V]) Len() int

Len 返回長度

func (TMap[K, V]) Root

func (m TMap[K, V]) Root() map[K]V

Root 獲取根對象

func (TMap[K, V]) Values

func (m TMap[K, V]) Values() (list []V)

Values 返回所有鍵值列表

  • TMap[K, V] 之 V 不滿足 comparable 約束, 故不能直接轉爲 List[V]
  • 但在具體場景中可通過 List(m.Values()) 在滿足約束的條件下轉換

type ZeroStruct

type ZeroStruct = struct{}

ZeroStruct 空結構

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL