Ir idioma select
Vá declarações condicionais de linguagem
selecione Go é uma estrutura de controle em uma declaração semelhante para a chave para se comunicar. Cada caso deve ser uma operação de comunicação, enviando ou recebendo.
seleciona uma execução de caso aleatório pode ser executado. Se não há processo a ser executado, vai ser bloqueada até que o processo pode ser executado. Uma cláusula padrão deve ser sempre em execução.
gramática
Ir programação sintaxe da linguagem instrução SELECT é a seguinte:
select { case communication clause : statement(s); case communication clause : statement(s); /* 你可以定义任意数量的 case */ default : /* 可选 */ statement(s); }
A seguir descreve a sintaxe da instrução SELECT:
- Cada caso deve ser uma comunicação
- Todos expressão do canal será avaliada
- Todas as expressões irá ser enviado para ser avaliado
- Se uma comunicação pode ser qualquer, que executa; outros são ignorados.
- Se mais de um caso pode ser executado, Select irá selecionar aleatoriamente uma execução justo. Outro não ser executado.
Caso contrário:- Se não houver cláusula padrão, a instrução é executada.
- Se não houver nenhuma cláusula padrão, selecione o bloco até que uma comunicação pode correr; Ir ao canal ou não o valor reavaliado.
Exemplos
package main import "fmt" func main() { var c1, c2, c3 chan int var i1, i2 int select { case i1 = <-c1: fmt.Printf("received ", i1, " from c1\n") case c2 <- i2: fmt.Printf("sent ", i2, " to c2\n") case i3, ok := (<-c3): // same as: i3, ok := <-c3 if ok { fmt.Printf("received ", i3, " from c3\n") } else { fmt.Printf("c3 is closed\n") } default: fmt.Printf("no communication\n") } }
O código acima é executado como resultado de:
no communication