Go Go linguagem linguagem de instruções condicionais

linguagem Go condicional declaração
declaração condicional exigido por desenvolvedores para especificar uma ou mais condições, e se é verdade que decidir se é necessário executar as condições de teste especificados pela instrução, e se a condição for falsa na implementação de outras declarações.

A figura abaixo mostra a estrutura da instrução condicional linguagem de programação:

afirmação descrição
A instrução if if é seguido por uma expressão booleana por esta última ou mais declarações.
if ... else if depois pode usar o opcional else , else na expressão execução é falso em expressões booleanas.
if aninhadas Você pode se ou mais se incorporado em uma ou mais declarações se ou else if declaração.
switch interruptor declaração é usada para executar ações diferentes com base em diferentes condições.
select selecionar instrução semelhante à interruptor declaração, mas o caso de execução irá selecionar aleatoriamente uma corrida. Se não há nenhum caso para executar, ele irá bloquear até que o caso foi executado.

se, se ... declaração e python pessoa ou C-like linguagem

Chave para explicar:

switch com base em condições diferentes para executar ações diferentes, cada sucursal caso é único, individualmente testada de cima para baixo, até a partida.

instrução switch executa o processo de cima para baixo, até que seja encontrada uma correspondência, seguido de um jogo não precisa adicionar pausa.

caso padrão interruptor declaração última pausa vem no caso, depois de um casamento bem-sucedido não executa outro caso, se o que precisamos fazer para trás o caso, você pode usar fallthrough .

gramática

Go sintaxe instrução switch linguagem de programação é a seguinte:

switch var1 {
    case val1:
        ...
    case val2:
        ...
    default:
        ...
}

Ele pode ser qualquer tipo de var1, enquanto val2 val1 e pode ser qualquer valor do mesmo tipo. Ou do tipo não se limita a um número inteiro constante, mas deve ser do mesmo tipo; ou o resultado final é o mesmo tipo de expressão.

Pode testar simultaneamente múltiplos valores podem satisfazer os critérios, que são separados por vírgulas, por exemplo: caso val1, val2, val3.

fluxograma:

func tyepe() {
	// switch语句练习
	grader := "B"
	marks := 40
	switch marks {
	case 90:
		grader = "A"
	case 80:
		grader = "B"
	case 50, 60, 70:
		grader = "C"
	default:
		grader = "D"
	}
	switch {

	case grader == "A":
		fmt.Println("优秀")
	case grader == "B":
		fmt.Println("良好")
	case grader == "C":
		fmt.Println("及格")
	case grader == "D":
		fmt.Println("不及格")
	}
}

func main() {
	// traversalstring()
	// changeStrings()
	tyepe()
}

tipo de interruptor

switch também pode ser usado para determinar a troca do tipo de interface de uma variável do tipo variável realmente armazenados.

Mudar tipo de sintaxe é a seguinte:

switch x.(type){
    case type:
       statement(s);      
    case type:
       statement(s); 
    /* 你可以定义任意个数的case */
    default: /* 可选 */
       statement(s);
}
func test() {
	var x interface{}
	switch i := x.(type) {
	case nil:
		fmt.Println("x的类型是  %T", i)
	case int:
		fmt.Println("x的类型是  %T", i)
	case float32:
		fmt.Println("x的类型是  %T", i)
	case bool, string:
		fmt.Println("x的类型是  %T", i)
	default:
		fmt.Println("未知类型")
	}
}

func main() {
	// traversalstring()
	// changeStrings()
	// tyepe()
	test()
}

Os resultados da execução do código acima:

x 的类型 :<nil>

Cair em

Use Enforces fallthrough parte de trás da declaração caso, um caso sob fallthrough não julgar se o resultado da expressão é verdadeira.

package main

import "fmt"

func main() {

    switch {
    case false:
            fmt.Println("1、case 条件语句为 false")
            fallthrough
    case true:
            fmt.Println("2、case 条件语句为 true")
            fallthrough
    case false:
            fmt.Println("3、case 条件语句为 false")
            fallthrough
    case true:
            fmt.Println("4、case 条件语句为 true")
    case false:
            fmt.Println("5、case 条件语句为 false")
            fallthrough
    default:
            fmt.Println("6、默认 case")
    }
}

Os resultados da execução do código acima:

2、case 条件语句为 true
3、case 条件语句为 false
4、case 条件语句为 true

A partir dos resultados acima saída de código: interruptor começa pela primeira expressão é uma determinação do caso para true, um caso continuará a operar se o caso tem fallthrough, programa, e não é para julgar a próxima expressão caso se a fórmula for verdadeira.

select

Go é um seleto estrutura de controle é semelhante à declaração switch para a comunicação. Cada caso deve ser uma operação de comunicação, quer transmitir ou receber.

realizada seleccionar aleatoriamente um caso em execução. Se não há nenhum caso para executar, ele irá bloquear até que o caso foi executado. A cláusula padrão deve sempre ser executado.

sintaxe:

Go linguagem de programação sintaxe 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 será enviado para ser avaliado

  • Se alguém da comunicação pode ser realizada, ele executa, o outro é ignorado.

  • Se mais de um caso pode correr, Select irá selecionar aleatoriamente uma execução justa. Outros não será executado.

    Caso contrário:

    1. Se não houver cláusula padrão, a instrução é executada.
    2. Se não houver cláusulas de default, selecione o bloco até que uma comunicação pode ser executado; Vai para o canal ou não re-valor é avaliada.

Exemplos

demos aplicação selecione declaração:

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")
   }    
}

Acho que você gosta

Origin www.cnblogs.com/heych/p/12577638.html
Recomendado
Clasificación