golang学习实例-猜拳小游戏
发布时间:2020-12-16 18:58:52 所属栏目:大数据 来源:网络整理
导读:学了一段golang,觉得应该实践一下,写了这个猜拳小游戏,顺带着学习下go testing。 主程序源码: package mainimport ("bufio" // 输入输出"fmt""math""math/rand""os""strconv""time")//rock,paper,scissorsconst (rock int = 1scissors int = 2paper int
|
学了一段golang,觉得应该实践一下,写了这个猜拳小游戏,顺带着学习下go testing。
主程序源码:
testing 源码package main
import (
"testing" // 加载test包
)
func TestCreateFinger(t *testing.T) {
// 顺带掌握以下struct作为map value的初始化
cases := map[int]Finger{
rock: Finger{rock,rockName},scissors: Finger{scissors,scissorsName},paper: Finger{paper,paperName},6: Finger{},// other
}
for cs,except := range cases {
result := createFinger(cs)
if result != except {
t.Errorf("case %v,except %v,result %v",cs,except,result)
}
}
}
func TestIsAiWin(t *testing.T) {
// 顺带掌握以下struct作为array element的初始化
cases := [...]struct {
cs [2]int
except int
}{
{[2]int{paper,rock},win},{[2]int{rock,paper},lose},scissors},{[2]int{scissors,{[2]int{paper,draw},}
for i := 0; i < len(cases); i++ {
cs := cases[i].cs
except := cases[i].except
result := isAiWin(createFinger(cs[0]),createFinger(cs[1]))
if result != except {
t.Errorf("case %v,result)
}
}
}
执行预览请输入你要出的拳:1->石头,2->剪刀,3->布,9->退出 3 电脑出拳为: 石头 你出拳为: 布 你赢了,继续输入: 2 电脑出拳为: 布 你出拳为: 剪刀 你赢了,继续输入: 1 电脑出拳为: 石头 你出拳为: 石头 平局,继续输入: 1 电脑出拳为: 剪刀 你出拳为: 石头 你赢了,继续输入: 1 电脑出拳为: 布 你出拳为: 石头 你输了,继续输入: 9 exit code 0,process exited normally. 实践过程中,还是发现诸多问题,例如丢失类型是长出现的问题,例如 cases := [...]struct {
cs [2]int
except int
}{
{[2]int{paper,{{scissors,//原来设想[2]int是可以省略,但是在这里会造语义分析失败,从而丢失cs的数据
}
一些疑问
import分开的话(即中间有空行的话),fmt是不会将之顺序对调,不知道会不会对import产生影响
import ( "bufio" // 输入输出 "os" "fmt" "strconv" "math" "math/rand" "time" ) 不分开的话,会是这样 import ( "bufio" // 输入输出 "fmt" "math" "math/rand" "os" "strconv" "time" ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
