需求:孩子做题需要我出题,我不想出。
为什么不用我熟悉的java,go可以直接生成exe文件。
Windows执行程序链接
set_quest.exe https://www.aliyundrive.com/s/yP3GuhTZoGD 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。
一、代码实现
package main import ( "fmt" "math/rand" "time" ) func main() { var count, num1, num2, num3, num4 int fmt.Println("请输入出题数字的最大值:") fmt.Scanln(&num1) fmt.Println("请输入答案的最大值:") fmt.Scanln(&num2) fmt.Println("请输入需要出题的数量:") fmt.Scanln(&num3) fmt.Println("请输入需要每行显示的数量:") fmt.Scanln(&num4) var sets Set = NewSet() for true { tem1 := getRandomWithAll(1, num1) tem2 := getRandomWithAll(1, num1) temStr := string(tem1) + string(tem2) if sets.Contains(temStr) { continue } else { sets.Add(temStr) } if tem1 > tem2 { oper := getRandomWithAll(0, 1) if oper == 0 { if tem1-tem2 <= int64(num2) { fmt.Printf("%d-%d=\t\t", tem1, tem2) count = calCount(count, num4) } } else { if tem1+tem2 <= int64(num2) { fmt.Printf("%d+%d=\t\t", tem1, tem2) count++ if count%num4 == 0 { fmt.Println() } } } } else if tem1 < tem2 { if tem1+tem2 <= int64(num2) { fmt.Printf("%d+%d=\t\t", tem1, tem2) count++ if count%num4 == 0 { fmt.Println() } } } if count >= num3 { break } } fmt.Println("\n请输入任意数字退出:") fmt.Scanln(&count) } func calCount(count int, num4 int) int { count++ if count%num4 == 0 { fmt.Println() } return count } func getRandomWithAll(min, max int) int64 { rand.Seed(time.Now().UnixNano()) return int64(rand.Intn(max-min+1) + min) } type Set struct { m map[string]bool } func NewSet() Set { m := make(map[string]bool) return Set{m: m} } func (s *Set) Contains(val string) bool { _, ok := s.m[val] return ok } func (s *Set) Add(val string) { s.m[val] = true } func (s *Set) Remove(val string) { delete(s.m, val) }
二、测试
三、打包成exe
go build .\set_quest.go