我试图在每次名单已经在列表中时重新启动此循环,这段代码显然只会检查一次。有没有办法让循环重新开始?谢谢!
for _, client := range list.clients {
//for i := 0; i < len(list.clients); i++ {
if(client.name==name){
connection.Write([]byte("Name already exists please try another one:\n"))
bytesRead, _ := connection.Read(reply)
name = string(reply[0:bytesRead])
name = strings.TrimSuffix(name, "\n")
}
}
答案 0 :(得分:2)
将其包裹在另一个for
:
Loop:
for {
for _, client := range list.clients {
if client.name == name {
connection.Write([]byte("Name already exists please try another one:\n"))
bytesRead, _ := connection.Read(reply)
name = string(reply[0:bytesRead])
name = strings.TrimSuffix(name, "\n")
continue Loop // Start over
}
}
break // Got through it; we're done
}
您也可以重置索引。 range
可能是错误的工具:
for i := 0; i < len(list.clients); i++ {
client := list.clients[i]
if client.name == name {
connection.Write([]byte("Name already exists please try another one:\n"))
bytesRead, _ := connection.Read(reply)
name = string(reply[0:bytesRead])
name = strings.TrimSuffix(name, "\n")
i = -1 // Start again
}
}