2 回答

TA贡献1906条经验 获得超10个赞
以防万一这是一个 eol(行尾)问题,请尝试:
fmt.Scanf("%s\r\n", &i)
这在“我如何fmt.Scanf
在 Go 中使用”中提到:
这是因为不同的行尾。
Windows 使用回车和换行('\r\n
')作为行尾。
Unix 使用换行符('\n
')

TA贡献1111条经验 获得超0个赞
我无法重现您的错误。
不要忽略错误。例如,
package main
import "fmt"
func main() {
var i string
n, err := fmt.Scanf("%s\n", &i)
if err != nil || n != 1 {
fmt.Println(n, err)
}
fmt.Println(i)
switch i {
case "a":
fmt.Println("good")
case "b":
fmt.Println("not good")
default:
fmt.Println("bad")
}
}
输出:
C:\>go version
go version go1.3.3 windows/amd64
C:\gopath\src\so>go run test.go
a
a
good
C:\gopath\src\so>go run test.go
b
b
not good
C:\gopath\src\so>go run test.go
t
t
bad
- 2 回答
- 0 关注
- 202 浏览
添加回答
举报