ServeMux这个类中有一个map,存储从url pattern到Handler的映射。
这些代码不知道是谁写的,感觉就像玩具一样。
这里的pathMatch,既不是精确匹配,也不是正则匹配,而是按前缀匹配。
match函数在对ServeMux里这个map做查找的时候,是全遍历,然后取长度最长的。通常来说,我们写的pattern都是精确的url,但是这里的匹配方式,使得即使找到了我想要的那个handler,还是得继续continue到最后一个record。
另外,我无法往这里面注册”/”。
因为我一旦注册了”/”,所有的url都会被匹配,那么无论来什么请求,都不会返回404。
Ø go 的路由要想优化比 regex 方式空间大
从理论上来说,需求越简单,实现就可以越高效。当它实际想去做那些优化的时候,代码就没现在这么优雅了。
而且,go 1已经发布了,接口不适合再做大的变动。按现在的接口规范来说,没法注册”/”。
我一旦注册了”/”,所有的url都会被匹配,那么无论来什么请求,都不会返回404。