集合类型
这页讲的是如何选择集合类型,而不是罗列全部 API。
Targo 的集合有两条路线:
- Go-native 路线:
slice<T>、map<K, V>、Fixed<T, N>、chan<T> - runtime 路线:
Array<T>
先做选择,再写代码
优先用 slice<T> 的情况
- 你在写核心业务逻辑
- 你希望代码更贴近 Go 的数据模型
- 你关心低开销和 Go interop
- 你不需要 JS 风格实例方法
优先用 Array<T> 的情况
- 你明确需要
push、map、filter、reduce - 你在迁移时想保留一部分熟悉的集合操作风格
- 你知道这是一层 runtime-backed 集合,而不是纯 Go-native 集合
map<K, V> 的使用原则
- 它是 Targo 的映射结构,不是 JS
Map - 如果你想表达“集合 / set”,通常用
map<T, bool>
chan<T> 的使用原则
- 它不是 Promise 替代品的语法糖
- 它是 Go 并发模型里的通信通道
- 应和 goroutine 一起思考,而不是按 JS async runtime 思维使用
迁移时最常见的错误
- 因为熟悉
Array<T>就把所有列表都写成Array<T> - 期望
slice<T>暴露和Array<T>相同的方法面 - 用 JS
Map/Set的思维去找对应 runtime,而不是直接使用 Targo 类型
推荐学习顺序
- 先学什么时候选
slice<T>和Array<T> - 再学
map<K, V>和chan<T>各自解决什么问题 - 最后再回头看具体 API