// 包名 package main import ( "fmt" "io/ioutil" "encoding/json" "./path" "./runtime" "strconv" // "time" // "./pk10" // "./db" ) func readJSON(file string) []map[string][]interface{} { log := fmt.Println jsondata, _ := ioutil.ReadFile(file) var user []map[string][]interface{} err := json.Unmarshal(jsondata, &user) if err != nil { log(err) return nil } return user } // 万能类型转数字。只能先转float64,然后转int func w2int(array []interface{}) []int{ var res []int for _, val := range array { var temp float64= val.(float64) res=append(res,int(temp)) } return res } // https://studygolang.com/pkgdoc func main() { log := fmt.Println log(str2arr("asdasd")) open() return var allArray []map[string][]interface{} runtime.Time("加载JSON数据",func () { // 遍历文件夹 var parhArray = path.Output(".\\data") // 只用一个文价测试 str := path.Abs("./"+parhArray[10]) log("正在读取:",str) oneData := readJSON(str) if oneData == nil { log("load failed") return } for _, item := range oneData { allArray = append(allArray,item) } log("长度: ", len(allArray)) host := 0 runtime.Time("遍历所有的数据",func () { for _, item := range allArray { // var mon int // 定义存放开奖类型的数组 var niu_list []int = w2int(item["type"][0:6]) // 庄家的牛 var host_niu int = niu_list[host] // 庄家为牛牛时大于其他的牛 if host_niu == 0 { host_niu = 11 } // 赢家的字符串 var win string = "" for i := 0; i < len(niu_list); i++ { if i!=host { if niu_list[i] > host_niu{ win += strconv.Itoa(i) } } } log(win) // 因为item["type"][7]刚取出来时万能类型,先转换成[]interface{},在转[]int // var alltype = w2int(item["type"][7].([]interface{})) // log(alltype) break } }) }) } // https://blog.csdn.net/u010412301/article/details/83894740 func open(host_v int,downmoney_v []int,cs float64, downpei_v []int, winner_v string) { var downmoney = []int{0,0,0,0,0,0} var host string= strconv.Itoa(0) // 定义所有玩家 var origin []string = []string{"0","1","2","3","4","5"} // 删除庄家位置 delOne(origin,host) var winner string = "123" var lose string = "" for _, val := range origin { var index int = -1 for i := 0; i < len(winner); i++ { // 此时winner[i]是byte类型,不能比较,需要转化成字符串 if (val == string(winner[i])) { index = i break } } if index==-1 { lose += val } } var temp = map[string]string{"w":winner,"l":lose} fmt.Println(winner) fmt.Println(lose) host_str,_ := strconv.Atoi(host) fmt.Println(getWin(downmoney,host_str,temp,[]int{1,1,1,1,1,1})) } func getWin(down []int,host int,wl map[string]string,pei []int) (int,map[string]string,int,int) { var sum = 0 var hostsum = down[host]; var bate = [6]int{0, 0, 0, 0, 0, 0} for i, val := range down { if i!= host { sum+=val if sum!=0 { bate[i] = hostsum / sum; }else{ bate[i] = 0 } }else{ bate[i] = -1; } } var win = [6]int{0, 0, 0, 0, 0, 0} var warr = str2arrInt(wl["w"]) var cal = 0 var summoney = 0 var money = hostsum for _, val := range warr { win[val] = down[val] * bate[val] * pei[val] money += down[val] * bate[val] * pei[val] cal += down[val] * bate[val] * pei[val] var intdown = down[val] * bate[val] if intdown<0 { summoney -= intdown }else{ summoney += intdown } } var larr = str2arrInt(wl["l"]) for _, val := range larr { win[val] = -down[val] * bate[val] * 1 * pei[val]; money -= down[val] * bate[val] * pei[val] var intdown = down[val] * bate[val] if intdown<0 { summoney -= intdown }else{ summoney += intdown } } var m = money + win[0] + win[1] + win[2] + win[3] + win[4] + win[5] var v = wl return m,v,cal,summoney // fmt.Println(warr) // fmt.Println(larr) // var win = [0, 0, 0, 0, 0, 0] } func str2arrInt(arr string) []int { var res []int for _, val := range arr { valint,_ := strconv.Atoi(string(val)) res = append(res,valint) } return res } func str2arr(arr string) []string { var res []string for _, val := range arr { res = append(res,string(val)) } return res } func findOne(array []string,value string) int { var res int = -1 for i := 0; i < len(array); i++ { if value == array[i] { res = i } } return res } func delOne(array []string,value string) []string { var res []string for i := 0; i < len(array); i++ { if value != array[i] { res = append(res,array[i]) } } return res }