我使用Fiber来构建一个Rest API,我想知道是否要在goroutine中运行每个处理函数,例如,假设我有以下路径:
router.Get("/get", getMockData)
router.Post("/create", createMockData)
router.Put("/update", updateMockData)
router.Delete("/delete", deleteMockData)
我是否应将其改为:
// I know this isn't syntactically correct but this is just an example.
router.Get("/get", go getMockData)
router.Post("/create", go createMockData)
router.Put("/update", go updateMockData)
router.Delete("/delete", go deleteMockData)
我应该这样做吗?我已经看了this问题,它说没有,但它的目标是net/http包,所以它并不真正适用。
谢谢大家!
1条答案
按热度按时间vcudknz31#
否。您不能将函数作为
goroutine
传递,因为这在概念上是错误的。您正在传递对router.Get("/get", getMockData)
中函数的引用,其中getMockData是函数的引用。您没有调用该函数,因为这不是您的责任。这是Fiber
或您使用的其他框架的责任。当客户端访问/get
这样的API时,Fiber会调用该函数,而且很可能是在一个单独的goroutine中调用,以提高效率。