ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
File: mvc/singleton/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 { //当使用单例控制器时,由开发人员负责安全访问 //所有客户端共享相同的控制器实例。 //注意任何控制器的方法 //是每个客户端,但结构的字段可以在多个客户端共享(如果是结构) //没有任何依赖于iris.Context的动态struct字段依赖项 //并且所有字段的值都不为零,在这种情况下我们使用uint64,它不是零(即使我们没有设置它 //手动易于理解的原因)因为它的值为&{0}。 //以上所有都声明了一个Singleton,请注意,您不必编写一行代码来执行此操作,Iris足够聪明。 // // see `Get`. visits uint64 } func (c *globalVisitorsController) Get() string { count := atomic.AddUint64(&c.visits, 1) return fmt.Sprintf("Total visitors: %d", count) } ~~~