尽管没有错,但还是没有达到内部。我不知道为什么它不匹配字符串的相等性测试,从而导致使用接口变量的函数调用不起作用

fmt.Println("Enter a valid query:")
fmt.Printf(">")
reader:=bufio.NewReader(os.Stdin)
inp,_:=reader.ReadString('\n')
query:=strings.Split(inp," ")
fmt.Println("0 : ",query[0])
fmt.Println("1 : ",query[1])

st:=query[1]
if query[0]=="cow"{
fmt.Println("inside cow going to",st)
    var a animal=cow{"Cow"}
    if query[1]=="eat"{
        a.eat()
    } else if query[1]=="move"{
        a.move()
    } else if st=="speak"{
        fmt.Println("inside cow speak")//Not reaching here even
        a.speak()
    }
}

最佳答案

我认为您的\n中有一个query[1](换行符)
如果您使用query:=strings.Fields(inp)而不是query:=strings.Split(inp," "),则您的问题将消失。

关于if-statement - Golang的新手,由于某种原因嵌套,否则无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61715524/

10-14 14:29
查看更多