IRIS MVC 单例控制器

目录结构

主目录singleton

  1. —— main.go

代码示例

main.go

  1. package main
  2. import (
  3. "fmt"
  4. "sync/atomic"
  5. "github.com/kataras/iris"
  6. "github.com/kataras/iris/mvc"
  7. )
  8. func main() {
  9. app := iris.New()
  10. mvc.New(app.Party("/")).Handle(&globalVisitorsController{visits: 0})
  11. // http://localhost:8080
  12. app.Run(iris.Addr(":8080"))
  13. }
  14. type globalVisitorsController struct {
  15. //当使用单例控制器时,由开发人员负责访问安全,所有客户端共享相同的控制器实例。
  16. //注意任何控制器的方法,是每个客户端,但结构的字段可以在多个客户端共享(如果是结构)
  17. //没有任何依赖于的动态struct字段依赖项
  18. //并且所有字段的值都不为零,在这种情况下我们使用uint64,它不是零(即使我们没有设置它手动易于理解的原因)因为它的值为&{0}
  19. //以上所有都声明了一个Singleton,请注意,您不必编写一行代码来执行此操作,Iris足够聪明。
  20. //见`Get`
  21. visits uint64
  22. }
  23. func (c *globalVisitorsController) Get() string {
  24. count := atomic.AddUint64(&c.visits, 1)
  25. return fmt.Sprintf("Total visitors: %d", count)
  26. }