匿名函数在Go语言中也是经常被使用的。一个合理正确的使用匿名函数,可以使得你的代码块结构简洁清晰。
案例:随机猜数游戏。范围1 ~ 100整数。可以有10次机会。
package main
import (
"fmt"
"time"
"math/rand"
)
func bingo() int {
//设置时间种子
rand.Seed(time.Now().UnixNano())
n := rand.Intn(100) + 1 //[0,100)
return n
}
func main() {
var guessNum int
var count int
a := bingo()
//fmt.Println(a)
compareNum := func (n int) int {
return (n - a)
}
for {
fmt.Println("请输入一个1~100的自然数:")
fmt.Scanln(&guessNum)
f := compareNum(guessNum)
if f != 0 {
count += 1
fmt.Printf("您还有%v次输入机会...",(10 - count ))
} else {
switch count {
case 0:
fmt.Printf("你只用了%v次猜对了,中奖数为%v,你是个天才 \n",count+1,a)
case 1,2,3 :
fmt.Printf("你很聪明,你用了%v次猜对了,中奖数为%v,快赶上我了 \n",count+1,a)
case 4,5,6,7,8:
fmt.Printf("好吧,你用了%v次猜对了,中奖数为%v,一般般啦 \n",count+1,a)
case 9:
fmt.Printf("你可算才对啦,你用了%v次猜对了,中奖数为%v \n",count+1,a)
}
break
}
if count == 10 {
fmt.Printf("你用了%v次,一次也没猜中,不知道说什么好了 \n",count)
break
}
}
}
将匿名函数赋给变量(compareNum),然后再通过赋给f , 就可以完成多次调用。