多个输入(fmt.Scanln)

huangapple go评论83阅读模式
英文:

Multiple input (fmt.Scanln)

问题

为什么这个不起作用,或者如何使用fmt.Scanln获取多个输入?

**编辑:**如果我插入多个单词,那么我会得到错误信息“Scan: expected newline”,有什么办法可以解决这个问题吗?

var username string
print("用户名:")
_, err := fmt.Scanln(&username)
if err != nil {
    fmt.Println("错误:", err)
}

var password string
print("密码:")
_, err := fmt.Scanln(&password)
if err != nil {
    fmt.Println("错误:", err)
}

var status string
print("状态:")
_, err := fmt.Scanln(&status)
if err != nil {
    fmt.Println("错误:", err)
}

fmt.Println(username, password, status)
英文:

Why does this doesn't work, or how to get multiple input with fmt.Scanln?

EDIT: If I insert more then one word then I get the Error "Scan: expected newline", anything I can do about this?

	var username string
	print("Username: ")
	_, err := fmt.Scanln(&username)
	if err != nil {
            fmt.Println("Error: ", err)
	}

	var password string
	print("Password: ")
	_, err := fmt.Scanln(&password)
	if err != nil {
            fmt.Println("Error: ", err)
	}

	var status string
	print("Status: ")
	_, err := fmt.Scanln(&status)
	if err != nil {
            fmt.Println("Error: ", err)
	}

	fmt.Println(username, password, status)

答案1

得分: 2

在相同的作用域中多次重新声明了err变量。
编译器错误应该已经明确指出了这一点。以下代码可以正常工作:

var err error
var username string

print("用户名:")
_, err = fmt.Scanln(&username)
if err != nil {
	fmt.Println("错误:", err)
}

var password string
print("密码:")
_, err = fmt.Scanln(&password)
if err != nil {
	fmt.Println("错误:", err)
}

var status string
print("状态:")
_, err = fmt.Scanln(&status)
if err != nil {
	fmt.Println("错误:", err)
}

fmt.Println(username, password, status)
return
英文:

You are re-declaring the err variable multiple times in the same scope.
The compiler error should have made that clear. The following will work:

var err error
var username string

print("Username: ")
_, err = fmt.Scanln(&username)
if err != nil {
	fmt.Println("Error: ", err)
}

var password string
print("Password: ")
_, err = fmt.Scanln(&password)
if err != nil {
	fmt.Println("Error: ", err)
}

var status string
print("Status: ")
_, err = fmt.Scanln(&status)
if err != nil {
	fmt.Println("Error: ", err)
}

fmt.Println(username, password, status)
return

huangapple
  • 本文由 发表于 2011年11月17日 03:23:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/8157441.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定