Golang:带有范围条件的for循环重新启动

Tim*_*teo 4 go

我试图在每次名称已在列表中时重新启动此循环,此代码显然只会检查一次。有没有办法让循环从头开始?谢谢!

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)

Rob*_*ier 5

将其包裹在另一个中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)