尽管它是正确的,但没有达到内部 if else 。我不知道为什么它不匹配字符串的相等性测试,因此使用接口(interface)变量的函数调用不起作用
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 新手,如果 else 不工作,由于某种原因嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61715524/