我决定看一下Go,我目前正在坚持一些事情。在这个程序中,我要求用户选择选项1或2.如果选择了选项1,我希望ReadAppList函数向用户询问姓氏。
似乎第二个scanf被跳过并且不允许用户输入姓氏。它只是读取第一个用户输入吗?
package main
import (
"fmt"
)
// Main function that runs on startup
func main() {
fmt.Println("\n1. Search Last Name ")
fmt.Println("\n2. Exit ")
fmt.Println("\nPick an option: ")
var userAnswer int
fmt.Scanf("%d", &userAnswer)
if userAnswer == 1 {
ReadAppsList()
} else if userAnswer == 2 {
fmt.Println("\nGoodbye.")
} else {
fmt.Println("\nThat is not a valid choice.")
}
}
func ReadAppsList() {
fmt.Println("\nType your LastName of the person you want to look up: ")
var lastName string
fmt.Scanf("%s", &lastName)
fmt.Sprintf("You typed %s", lastName)
}
答案 0 :(得分:1)
在ReadAppsList中,您有:
fmt.Sprintf("You typed %s", lastName)
问题是Sprintf
返回一个字符串而不写入屏幕。将其更改为Printf
,然后打印姓氏。
姓氏Scanf
正在发生,正如您所期望的那样。
答案 1 :(得分:1)
这是因为第一次扫描没有消耗额外的换行符
将您的scanf更改为此fmt.Scanf("%d\n", &userAnswer)
。