IRIS MVC 单例控制器

目录结构

主目录singleton

    —— main.go

代码示例

main.go

package main

import (
    "fmt"
    "sync/atomic"
    "github.com/kataras/iris"
    "github.com/kataras/iris/mvc"
)

func main() {
    app := iris.New()
    mvc.New(app.Party("/")).Handle(&globalVisitorsController{visits: 0})
    // http://localhost:8080
    app.Run(iris.Addr(":8080"))
}

type globalVisitorsController struct {
    //当使用单例控制器时,由开发人员负责访问安全,所有客户端共享相同的控制器实例。
    //注意任何控制器的方法,是每个客户端,但结构的字段可以在多个客户端共享(如果是结构)
    //没有任何依赖于的动态struct字段依赖项
    //并且所有字段的值都不为零,在这种情况下我们使用uint64,它不是零(即使我们没有设置它手动易于理解的原因)因为它的值为&{0}
    //以上所有都声明了一个Singleton,请注意,您不必编写一行代码来执行此操作,Iris足够聪明。
    //见`Get`
    visits uint64
}

func (c *globalVisitorsController) Get() string {
    count := atomic.AddUint64(&c.visits, 1)
    return fmt.Sprintf("Total visitors: %d", count)
}

results matching ""

    No results matching ""