• 好家庭
    2021-09-17
    为IGroup实现如下接口: Group(string) IGroup 类似于builder设计模式,可以链式调用

    作者回复: 你好,是的,这种方式支持链式调用,使用起来比较舒服。

    
    7
  • 路漫漫其修远兮
    2021-12-07
    两种路由方式是不是可以看成一类,底层存储不同?动态是指动态根据uri添加和获取handler。另外这种动态是否有必要去做,毕竟map是O(1)

    作者回复: 没办法的,动态路由确实有使用场景,特别对restapi风格比较执着的人会非常需要动态路由的,所以现在做框架基本都要求支持动态路由。当然,如果纯从性能考虑那是另外一个了

    
    2
  • 友
    2021-11-30
    仔细思考了下这个trie🌲,路由如果是 /user/login 切割之后 会出现一层segment 为 空字符串 这样会浪费一些空间 这种空应该用不到吧 我觉得可以处理下 不知道老师怎么看 当前第0层 segment= 当前第1层 segment= 当前第2层 segment= USER 试着写了一个多叉树的打印,第0层是 tree.root 确实为空 但是第一层也为空

    作者回复: 思路ok的,可以节省一层。

    共 2 条评论
    2
  • 小然
    2021-09-17
    文中的树的图结构是否问题呢,按照代码实际生成的每一颗trie树root节点下面第一个子节点实际上是segment为空的节点,然后在这个节点下才是各个一级路劲的子节点。是我理解错误吗?我带着文中的树图结构去看代码添加路由算法看起来有很大的偏差,脑袋里想象纠正,先在root节点下先加一个segment为空的节点就好理解了。

    作者回复: 是的,这里主要是由于 segments := strings.Split(uri, "/") 会产生出第一个空节点。我在文章图中补充了一下描述。 谢谢提醒。

    共 3 条评论
    2
  • 我是熊大
    2022-11-28 来自北京
    看了三章觉得作者对于GO的使用,或者说是架构设计已经炉火纯青,细节很到位

    作者回复: 感谢

    
    1
  • 咸鱼
    2021-12-11
    有个小问题想咨询一下老师,filterChildNodes这个函数是否可以只返回一个*node,在什么情况下会返回多个*node?感觉按照约束条件来看,filterChildNodes只有可能返回一个*node

    作者回复: 如果有通配符,那么就有可能有多个,比如路由:/foo/*/bar和 /foo/bar, 请求url为foo/bar,当查询第二个bar的时候,就有可能匹配到2个的

    共 2 条评论
    1
  • 友
    2021-11-30
    老师的字典树思路巨清晰,之后重构的时候自己重新把字典树写了 都有点模糊了 期待后续文件 感谢老师分享

    作者回复: 同感谢

    
    1
  • 邹志鹏.Joey ⁷⁷...
    2023-01-31 来自广东
    child 的复数形式是 children, 希望可以改下

    作者回复: 谢谢

    
    
  • 友
    2021-11-30
    刷了一个月的leetcode 让我的第一反应是字典树 应该没说错

    作者回复: 是的

    
    
  • 木小柒
    2021-09-21
    /user/name /user/:id 一开始看这个,想找个冲突挺奇怪的,这个感觉还算正常,才发觉原来这里 :id 类似 gin 里面的 *id

    作者回复: 是的,在gin中也有:id, 代表有一个,而*代表匹配所有。

    
    