如果在go lang中有其他声明

Ruy*_*Dan -2 if-statement go

有人可以帮我调试这个程序,只在每个输入上处理else部分.这是一个评分学生的程序.学生输入标记并显示成绩

func main(){
    var x int
    fmt.Println("Enter your marks")

    fmt.Scanf("%d",&x)

    if (100 <= x) && (x<=75){
        fmt.Println("D1")
    }else if (74 <= x)&&(x <= 70){
        fmt.Println("D2")
    }else if (69 <= x )&&(x<=65){
        fmt.Println("C3")
    }else if (64 <= x)&&(x <= 60){
        fmt.Println("C4")
    }else if (59 <= x)&&(x <= 55){
        fmt.Println("C5")
    }else if (54 <= x)&&( x<= 50){
        fmt.Println("C6")
    }else if (49 <= x )&&(x<= 45){
        fmt.Println("P7")
    }else{
        fmt.Println("Work harder")
    }
}
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 22

你有一个逻辑问题.

更改

if (100 <= x) && (x<=75){
Run Code Online (Sandbox Code Playgroud)

if 75 <= x && x <= 100 { // numbers here are ordered from smallest to greatest
Run Code Online (Sandbox Code Playgroud)

因为数不能大于100 小于75.

当然,其他系列也是如此.

请注意,您可以进行较少的比较.假设您最初测试的数字是否小于100,那么在您测试它小于75之后,您不必测试它是否小于75.

一个典型的Go代码可能有一个switch而不是所有那些if/else.请参阅文档中的开关.以下是用以下方法编写的switch:

switch {
case x > 100:
    fmt.Println("Congrats!") // you forgot this one
case x >= 75:
    fmt.Println("D1")
case x >= 70:
    fmt.Println("D2")
case x >= 65:
    fmt.Println("C3")
case x >= 60:
    fmt.Println("C4")
case x >= 55:
    fmt.Println("C5")
case x >= 50:
    fmt.Println("C6")
case x >= 45:
    fmt.Println("P7")
default:
    fmt.Println("Work harder")
}
Run Code Online (Sandbox Code Playgroud)

最后一条评论:很少发生这种类型的切换代码,因为通常将阈值和相关注释存储为数据,例如在a中struct.

  • @BilltheLizard这种比较形式反映了数学符号"75 <= x <= 100",在这种情况下,"75 <= x && x <= 100"非常有意义.没有所有不必要的括号,它看起来好多了! (3认同)
  • 尔加!`constant <= variable && variable <= constant`令人困惑. (2认同)