Regex 保留结构数据以便以后使用
我正在学习golang——编写小型网络博客,并编写路由器(我知道有几种——gorilla mux、martini等) 我有一个简单的结构Regex 保留结构数据以便以后使用,regex,go,Regex,Go,我正在学习golang——编写小型网络博客,并编写路由器(我知道有几种——gorilla mux、martini等) 我有一个简单的结构 type Routes struct { method string pattern string handler Handler } 还有一些正则表达式匹配器。但我不明白如何将我将定义的所有路线保留在一个地方。使用结构切片是个好主意吗(比如 []路由)将它们保持在一起 顺便说一句,这是为了个人理解这一切是如何协同工作的你的问
type Routes struct {
method string
pattern string
handler Handler
}
还有一些正则表达式匹配器。但我不明白如何将我将定义的所有路线保留在一个地方。使用结构切片是个好主意吗(比如
[]路由
)将它们保持在一起
顺便说一句,这是为了个人理解这一切是如何协同工作的你的问题并不是很明确。您告诉我们您希望实现基于正则表达式的路由功能,但您没有告诉我们您希望实现哪些任务,这些任务会极大地影响要使用的最佳或最佳数据结构 您已经提到,您知道许多其他开源实现,也许您应该检查它们的源代码 也可能对您有所帮助,它展示了一个基本实现的简单实现,如何使用正则表达式执行路由功能 如果您只希望能够注册正则表达式(如果与请求路径匹配),然后将服务转发给,那么将“规则”存储在
[]路由中是一个可行且简单的选择
要记住的事情:
- 我肯定会提前编译regexp并存储结果,而不是每次都编译它们,这是对资源的极大浪费。因此,您的
路由
结构应该包含类型字段,而不是模式字段(您也可以保留字符串
模式,例如用于调试目的)
<> L> > P > >如果你的代码>路由 SCORT变大,我会考虑在切片中存储指针而不是结构值,例如<代码> []:Reals。因为每次当你循环它们时(例如在每个请求中查看哪些匹配),或者每当你从一个<代码>路由< /代码>中创建一个本地变量时,就会从这些值中复制一个副本。与快速复制指针相比,复制大型结构效率较低
谢谢你的建议,但是你能解释一下关于编译regexp的更多信息吗?编译regexp是什么意思?@Avdept如果你在Go中有一个regexp作为字符串
,如果你想检查这个regexp是否与另一个字符串
匹配,你可以使用这个方法Regexp
是string
正则表达式的编译(分析)版本。您可以编译一个regexp字符串
,并获取一个regexp
值,例如使用or函数。