保留结构数据以备后用

我正在学习 golang - 编写小型网络博客,并编写路由器(我知道有一些可用的 - gorilla mux、martini 等)。


我有简单的结构


type Routes struct {    

    method string

    pattern string

    handler Handler

}

和一些正则表达式匹配器。但我不明白如何将所有我将定义的路线保留在一个地方。使用结构切片是个好主意(如 []Routes)将它们保持在一起吗?


PS这是为了个人理解它是如何协同工作的


MYYA
浏览 171回答 1
1回答

慕少森

你的问题没有很好的定义。你告诉我们你想基于正则表达式实现路由功能,但你没有告诉我们你想要实现什么样的任务,这会极大地影响要使用的最佳或最佳数据结构。您已经提到您了解许多其他开源实现,也许您应该检查它们的来源。这个答案也可能对您有所帮助,它显示了如何使用正则表达式执行路由功能的基本实现的简单实现。如果您只是希望能够注册与请求路径匹配的正则表达式,然后将服务转发到 a Handler,是的,将“规则”存储在 a 中[]Routes是一个可行且简单的选项。要记住的事情:我肯定会提前编译正则表达式并存储结果,而不是每次都编译它们,这非常浪费资源。所以你的Routes结构应该包含一个类型的字段*regexp.Regexp而不是模式(你也可以保留string模式,例如用于调试目的)。如果您的Routes结构变大,我会考虑在切片中存储指针而不是结构值,例如[]*Routes因为每次循环遍历它们时(例如在每个请求中查看哪些匹配项)或每当您从其中一个创建局部变量时Routes,根据值制作副本。与复制速度快的指针相比,复制大型结构体效率低下。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go