1. 简单实现抽奖
- 安装并创建好iris测试项目
在测试项目目录下创建main.go文件,内容如下
/**
* 1 即开即得型 刮刮乐
* 2 定时开奖型 双色球
*/
package main
import (
"fmt"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/mvc"
"math/rand"
"time"
)
type lotterController struct {
Ctx iris.Context
}
func newApp() *iris.Application {
app := iris.New()
mvc.New(app.Party("/")).Handle(&lotterController{})
return app
}
func main() {
app := newApp()
app.Run(iris.Addr(":8080"))
}
// 类型1
func (c *lotterController) Get() string {
var prize string
seed := time.Now().UnixNano()
code := rand.New(rand.NewSource(seed)).Intn(10)
switch {
case code == 1:
prize = "一等奖"
case code >=2 && code <= 3:
prize = "二等奖"
case code >= 4 && code <= 6:
prize = "三等奖"
default:
return fmt.Sprintf("尾号为1获得一等奖\n"+
"尾号为2/3获得二等奖\n"+
"尾号为4/5/6获得三等奖\n"+
"code=%d\n"+
"很遗憾,您未中奖", code)
}
return fmt.Sprintf("尾号为1获得一等奖\n"+
"尾号为2/3获得二等奖\n"+
"尾号为4/5/6获得三等奖\n"+
"code=%d\n"+
"恭喜您获得:%s", code, prize)
}
// 类型2
func (c *lotterController) GetPrize() string {
seed := time.Now().UnixNano()
r := rand.New(rand.NewSource(seed))
var prize [7]int
// 6个红色球,1~33
for i := 0; i < 6; i++ {
prize[i] = r.Intn(33)+1
}
// 最后一个蓝色球,1~16
prize[6] = r.Intn(16)+1
return fmt.Sprintf("今日开奖号码是: %v", prize)
}
启动:

刮刮乐类型抽奖:

彩色求类型抽奖:

由于不存在操作共享变量,因此不会出现并发问题
网友评论