Command

cli-command.svg
图 1: Command & Category

Command 与 CommandCategory 的关系如图 1 所示。Command 通过变量 Category 与 CommandCategory 中的 Name 关联,CommandCategory 中包含了一组 Category 相同的 Command。

Command 中主要有三个可执行方法:BeforeFunc、Action 及 AfterFunc,执行顺序根据类型命名就很清晰。

Trie

cli-trie.svg

图 2: Trie - Insert

Trie 的 Insert 方法如图 2 所示。以字符串中每一个 rune 为单位开始从 root 节点开始遍历。如果当前 Node 的 rune 映射中不存在当前 rune 值,创建并指向一个空 Node 节点,并将下次遍历节点指向新建(查找到)的 Node 节点。最后,创建新 Node,并将其 value 赋值为原始字符串,并标记当前 Node 的 exists 为 true,表明当前节点有存储实际值。