tsv

package
v0.0.0-...-2439b48 Latest Latest
Warning

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

Go to latest
Published: Mar 2, 2026 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Conf

type Conf[K cmp.Ordered, V any] struct {
	// contains filtered or unexported fields
}

Conf 表示单个 TSV 配置表,泛型参数 K 为主键类型,V 为行数据结构体类型。

线程安全:通过 sync.Mutex 保护 records 并发读写, Reload 操作先将新数据解析到临时 map,解析成功后原子替换, 保证热重载期间不会出现读到半更新状态的数据。

func New

func New[K cmp.Ordered, V any](dir string) (*Conf[K, V], error)

New 根据泛型参数 V 推导结构体名称并自动查找对应 TSV 文件。

文件路径规则:{dir}/{V的类型名}.tsv,例如 V 为 *ItemConf,则加载 {dir}/ItemConf.tsv。 创建时立即执行一次 Reload,若文件不存在或格式错误则返回 error。 V 必须为结构体类型或结构体指针类型,否则返回错误。

func (*Conf[K, V]) Filter

func (tsv *Conf[K, V]) Filter(filter func(line V) bool) []V

Filter 返回所有满足过滤条件的记录切片(线程安全)。

返回的切片可能为空(nil),调用方应处理空切片场景。

func (*Conf[K, V]) Get

func (tsv *Conf[K, V]) Get(id K) V

Get 通过 ID 查询单行数据,ID 不存在时返回 V 的零值(线程安全)。

func (*Conf[K, V]) GetAll

func (tsv *Conf[K, V]) GetAll() []V

GetAll 返回所有数据行的切片(线程安全)。

返回顺序不保证与 TSV 文件行顺序一致(map 迭代顺序随机)。

func (*Conf[K, V]) Name

func (tsv *Conf[K, V]) Name() string

Name 返回配置表名称。

func (*Conf[K, V]) NumRecord

func (tsv *Conf[K, V]) NumRecord() int

NumRecord 返回当前加载的数据行数(线程安全)。

func (*Conf[K, V]) Reload

func (tsv *Conf[K, V]) Reload() error

Reload 重新从文件加载配置数据,支持热更新。

采用"解析到临时 map → 成功后原子替换"的两阶段更新策略, 保证重载失败时原有数据不被破坏,业务逻辑不受影响。

func (*Conf[K, V]) Select

func (tsv *Conf[K, V]) Select(filter func(line V) bool) (V, error)

Select 查找第一条满足过滤条件的记录,找到返回记录和 nil error, 未找到返回零值和 "not found" error(线程安全)。

Jump to

Keyboard shortcuts

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