900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > [GO]学习新语言之卡塔练习--猜数字

[GO]学习新语言之卡塔练习--猜数字

时间:2023-01-01 04:51:34

相关推荐

[GO]学习新语言之卡塔练习--猜数字

最近在看go语言,对语法稍做了些了解,写个简单的猜数字小游戏来加深一下语法之印象。

package main//by kevin at -04-15 01:30//写我喜欢玩的猜数字游戏,初学go之第一个程序import ("fmt""time""math/rand"/*"os"*/)func rndnum() []int{//使用string, 但是却因为其不可被修改,只好使用[]num_set := []int {0,1,2,3,4,5,6,7,8,9}sz := len(num_set)/*fmt.Println("sz:",sz)*/for i,_ := range num_set {r := rand.Intn(sz)/*fmt.Println("i:",i," v:",v," r:",r) */num_set[i], num_set[r] = num_set[r], num_set[i]}/*fmt.Println("num_set:", num_set) */return num_set[0:4]}func checknum(n int, target []int) (right_ , miss_ int) {//将数字拆分成4个int[]num := []int {n/1000, (n%1000)/100, (n%100)/10, (n%10)}/*fmt.Println("num:", num) *//*fmt.Println("target:", target) */right := 0 //数字对且位置对miss := 0 //数字对但是位置不对for i,m := range num {for j,t := range target{if m == t {if i == j {right++} else{miss++}}} }return right, miss}func main() {//产生符合规则的数字rand.Seed(time.Now().UnixNano())num := rndnum()/*fmt.Println("num:", num) *///开始准备猜数字var right, miss intvar guess_count int = 1for right!=4 {fmt.Printf("%d Please input a number(0000-9999):", guess_count)var s intfmt.Scanf("%d\n", &s)//fmt.Println("you input is:", s)right, miss = checknum(s, num)/*fmt.Println("right:",right," miss:", miss)*/fmt.Println("\t",s,"\t->\t", right,"A", miss, "B")guess_count++}fmt.Println("Yes!!Number is ", num)}

玩一把就睡觉:

[kevin@kevinlin:~/go]$ ./guess

1 Please input a number(0000-9999):1234

1234 -> 0 A 1 B

2 Please input a number(0000-9999):5678

5678 -> 0 A 2 B

3 Please input a number(0000-9999):1208

1208 -> 0 A 2 B

4 Please input a number(0000-9999):3409

3409 -> 0 A 1 B

5 Please input a number(0000-9999):2067

2067 -> 0 A 2 B

6 Please input a number(0000-9999):6105

6105 -> 0 A 1 B

7 Please input a number(0000-9999):9826

9826 -> 2 A 2 B

8 Please input a number(0000-9999):8926

8926 -> 4 A 0 B

Yes!!Number is [8 9 2 6]。

接下来要试试goroutine之功能,还有rpc等~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。