Это очень необычно: учитывая тот же ввод, Go будет вести себя по-разному наугад.Несоответствующее поведение в случае с переключателем Go
package main
import "fmt"
func main() {
var i string
fmt.Scanf("%s\n", &i)
fmt.Println(i)
switch i {
case "a":
fmt.Println("good")
case "b":
fmt.Println("not good")
default:
fmt.Println("bad")
}
}
в командной строке я бегу
go run test.go
я типа
"a <enter>"
иногда получают:
a
a
good
и случайным образом (примерно половину времени) делает то же самое вещь дает:
a
t
bad
Установка go1.3.3.windows-amd64.msi на Windows 7 Любая идея, что здесь происходит?
Я переписал Scanf, как вы сказали, но это не меняет выход. Однако я все же изолировал его: если я назову «go run test.go» и сразу же введите значение «a», то до того, как он завершит компиляцию, по какой-то причине он регистрируется как «t». Нечетное поведение, вероятно, вызванное компилятором/компоновщиком и не имеет ничего общего с спецификацией языка. – ridthyself