我试图在每次名称已在列表中时重新启动此循环,此代码显然只会检查一次。有没有办法让循环从头开始?谢谢!
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")
}
}
Run Code Online (Sandbox Code Playgroud)
将其包裹在另一个中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
}
Run Code Online (Sandbox Code Playgroud)
您也可以重置索引。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
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8816 次 |
| 最近记录: |