Skip to content

集合类型

这页讲的是如何选择集合类型,而不是罗列全部 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> 的情况

  • 你明确需要 pushmapfilterreduce
  • 你在迁移时想保留一部分熟悉的集合操作风格
  • 你知道这是一层 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 类型

推荐学习顺序

  1. 先学什么时候选 slice<T>Array<T>
  2. 再学 map<K, V>chan<T> 各自解决什么问题
  3. 最后再回头看具体 API

对应 Reference