Сравнение равно true, но когда я ставлю это как условие, почему он не оценивается как истинный?
a := "ALL"
b := "not all"
if (a == "ALL") != (b == "ALL") {
fmt.Printf("why not falling into this case?\n")
}
Вот фрагмент кода Go, который я написал, чтобы напечатать что-то, если a и b имеют ровно один, чтобы быть "ВСЕ". Но почему fmt.Printf не запускается?
Однако выполняется следующее:
c := (a == "ALL") != (b == "ALL")
if c {
fmt.Printf("if assign to c, do fall in here\n")
}
Но какая разница между двумя частями?
Я также вставил вышеуказанный код на игровой площадке go: http://play.golang.org/p/e5tNai_d20 Любое объяснение будет принята с благодарностью! Спасибо заранее.
Ответы
Ответ 1
Это ошибка 1.5, и выглядит аналогично этому: https://github.com/golang/go/issues/12226
Он фиксируется на главной ветке, поэтому вы можете либо понизить до 1.4.2, либо дождаться следующей версии, либо скомпилировать подсказку мастера.
Изменить: Go1.5.1 был выпущен и содержит исправление к этой проблеме