我试图使用fmt.scanln()通过我在Golang的控制台接收用户的输入。它在正常情况下工作正常。但是,每当我在循环中接受输入时,输入在第一次迭代中是正确的,但是在循环的下一次迭代中,在接收到的字符串前面会添加一个额外的smiley。我不知道有什么问题。如果有人提出解决方案,我将非常感激。
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)