通过golang中的fmt.Scanln()获取用户输入时出现问题
我试图通过使用fmt.Scanln在golang的控制台从用户那里获取输入。它在正常情况下工作正常。但是,每当我在循环中获取输入时,输入在第一次迭代中是正确的,但是在循环的下一次迭代中,会在收到的字符串前面添加一个额外的笑脸。我不知道是什么问题。如果有人提出一些解决方案,我将非常感激通过golang中的fmt.Scanln()获取用户输入时出现问题,go,input,buffer,user-input,Go,Input,Buffer,User Input,我试图通过使用fmt.Scanln在golang的控制台从用户那里获取输入。它在正常情况下工作正常。但是,每当我在循环中获取输入时,输入在第一次迭代中是正确的,但是在循环的下一次迭代中,会在收到的字符串前面添加一个额外的笑脸。我不知道是什么问题。如果有人提出一些解决方案,我将非常感激 func (a *Block) fillBlock() { fmt.Println("Block Details:") fmt.Print("Enter Block Name: ") fmt.Scanln(&
func (a *Block) fillBlock() {
fmt.Println("Block Details:")
fmt.Print("Enter Block Name: ")
fmt.Scanln(&a.Data)
for i := 0; i < Students; i++ {
fmt.Print(i, "Enter Student Roll# ")
fmt.Scanln(&a.Grades[i].Rollno)
fmt.Print(i, "Enter Student Grade# ")
fmt.Scanln(&a.Grades[i].Grade)
}
fmt.Println("\nInput Data:")
fmt.Println("Data: ",a.Data)
// Iterating over each student
for i := 0; i < Students && (a.Grades[i].Rollno != "" && a.Grades[i].Grade != ""); i++ {
fmt.Println("Rollno: " + string(i) + a.Grades[i].Rollno)
fmt.Println("Grade: " + string(i) + a.Grades[i].Grade)
}
}
这是错误的:
fmt.Println("Rollno: " + string(i) + a.Grades[i].Rollno)
相反,使用
fmt.Println("Rollno: " + strconv.Itoa(i) + a.Grades[i].Rollno)
或者更好:
fmt.Printf("Rollno: %d %s\n",i a.Grades[i].Rollno)