如何将Int Var与结构的内容进行比较

时间:2018-12-11 14:42:23

标签: go

使用Go 1.11。得到了以下结构,

type inputsData struct {
  TurnOne   int
  TurnTwo   int
  TurnThree int
  TurnFour  int
  TurnFive  int
  TurnSix   int
  TurnSeven int
  TurnEight int
  TurnNine  int
}

保留来自用户输入的数据。没关系,但是我想从TurnTwo检查用户输入的内容是否已经输入?

示例Input 1 -> 6Input 2 -> 4Input 3 -> 6

因此,一旦用户再次在转弯3输入6,它将发生日志,抱歉,请重试...

这就是我的检查方式,

func checkInputTwo(userInput int) bool {
   var ok bool
   ok = true
   if userInput == t.TurnOne {
    ok = false
   }
   if userInput == t.TurnTwo {
    ok = false
   }
   if userInput == t.TurnThree {
    ok = false
   }
   if userInput == t.TurnFour {
    ok = false
   }
   if userInput == t.TurnFive {
    ok = false
   }
   if userInput == t.TurnSix {
    ok = false
   }
   if userInput == t.TurnSeven {
    ok = false
   }
   if userInput == t.TurnEight {
    ok = false
   }
   if userInput == t.TurnNine {
    ok = false
   }

   return ok
}

这就是我加载该函数的方式

func checkStageTwo(input int) int {
  var ok bool

   fmt.Println(ok)

   for ok {
      ok = checkInputTwo(input)
      fmt.Println(ok)
   }

   fmt.Println(ok)

   return input
}

我只是加载了为它提供输入的函数。这是行不通的。它允许输入相同的输入,但是一旦匹配,我就陷入了循环打印错误的境地?

所以基本上我想检查用户输入的内容以及它是否在我的结构内容之内。我已经加载了struct包,因此可以用于所有功能。

谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定您的特定用例是什么,但纯粹基于显示的代码,这实际上应该是切片或数组而不是结构。具有编号字段的结构是非常不寻常的设计。如您所见,带有编号字段的结构是非常不寻常的设计,并且很难使用。如果是切片,则可以将其循环:

func checkInput(userInput int, pastInputs []int) bool {
    for _,i := range pastInputs {
        if userInput == i {
            return flase
        }
    }
    return true
}