![Proxmox remove nó do cluster incluindo Ceph](https://optimuscloud.com.br/wp-content/uploads/2024/04/1713314647_Proxmox-remove-no-do-cluster-incluindo-Ceph-150x150.png)
Proxmox remove nó do cluster incluindo Ceph
16 de abril de 2024![Conheça o System Package Data Exchange: SPDX 3.0, com Perfis](https://optimuscloud.com.br/wp-content/uploads/2024/04/1713325444_Conheca-o-System-Package-Data-Exchange-SPDX-30-com-Perfis-150x150.png)
Conheça o System Package Data Exchange: SPDX 3.0, com Perfis
17 de abril de 2024Loops de programação: você os conhece, você os ama. Ou isso ou você não os conhece e não tem certeza de quão importantes eles são para quase todas as linguagens de programação.
Golang não é exceção e usa o loop for para repetir um bloco de código até que uma determinada condição seja atendida. O loop for é na verdade o tipo mais básico de loop em Go, mas você usará com bastante frequência.
Os motivos pelos quais você pode usar um loop for são variados (dependendo de suas necessidades). Por exemplo, você pode querer imprimir um extrato várias vezes. Em vez de escrever o mesmo fmt.print() declaração repetidamente, você poderia usar um loop for para cuidar do processo.
Um loop for consiste nos seguintes bits:
- A inicialização – inicializa ou declara variáveis.
- A condição – o que é usado para avaliar a condição. Enquanto a condição permanecer verdadeira, o loop será executado.
- A atualização – atualiza o valor da inicialização cada vez que o loop é executado.
- Declaração(ões) – o que é executado
A sintaxe básica do loop for é assim:
for initialization; condition; update { statement(s) }
Lembra do nosso exemplo de impressão acima? Digamos que queremos imprimir New Stack Rocks 10 vezes. Sim, poderíamos escrever um programa Go que simplesmente usasse o fmt.Println() funcionar 10 vezes assim:
package main import "fmt" func main() { fmt.Println("New Stack Rocks") fmt.Println("New Stack Rocks") fmt.Println("New Stack Rocks") fmt.Println("New Stack Rocks") fmt.Println("New Stack Rocks") fmt.Println("New Stack Rocks") fmt.Println("New Stack Rocks") fmt.Println("New Stack Rocks") fmt.Println("New Stack Rocks") fmt.Println("New Stack Rocks") }
Se você executasse o código acima, ele imprimiria, de fato, o seguinte:
Novas pedras empilhadas
Novas pedras empilhadas
Novas pedras empilhadas
Novas pedras empilhadas
Novas pedras empilhadas
Novas pedras empilhadas
Novas pedras empilhadas
Novas pedras empilhadas
Novas pedras empilhadas
Novas pedras empilhadas
Claro, você não quer fazer as coisas dessa maneira. Não só é ineficiente, mas também é uma ótima maneira de introduzir erros e não é muito eficaz. Em vez disso, faremos a mesma coisa com um loop for assim:
package main import "fmt" func main() { for i := 1; i <= 10; i++ { fmt.Println("New Stack Rocks") } }
Você já sabe que chamamos o pacote principal e importamos fmt com as duas primeiras linhas. A próxima linha função principal() inicializa o pacote principal. Nosso loop for é então criado com o seguinte:
- i := 1 – a inicialização que define i como 1.
- i <= 10 – a condição que diz que enquanto i for menor ou igual a 10, continue.
- i++ – a atualização que adiciona 1 ao valor anterior de I.
- fmt.Println(“New Stack Rocks”) – nossa instrução print que é executada enquanto i <= 10.
Na mesma linha, você pode até criar um loop infinito. Por que você iria querer usar um loop infinito? Na verdade, eles têm seus propósitos. Por exemplo, você pode querer escrever um código de aplicativo que deve continuar em execução até ser interrompido, como um servidor web ou um aplicativo que requer entrada contínua do usuário até que o aplicativo seja interrompido manualmente.
Um loop infinito pode ser realizado com um loop for menos a instrução de condição. Então, um loop for pode ser parecido com isto:
for { fmt.Println("New Stack Rocks") }
Todo o aplicativo poderia ficar assim:
package main import "fmt" func main() { for { fmt.Println("New Stack Rocks") } }
Se você executar o código acima, ele continuará imprimindo New Stack Rocks, até que você o elimine com algo como o atalho de teclado Ctrl+C.
Há outro truque muito legal com o loop for que inclui a palavra-chave range. A palavra-chave range é usada para iterar elementos em uma estrutura de dados. Range pode ser usado com arrays, fatias, strings, mapas e canais. Deixe-me mostrar um exemplo de uso da palavra-chave range em um loop for iterando sobre uma string.
O loop for com a palavra-chave range será mais ou menos assim:
for i, ch := range "New Stack Rocks" { fmt.Printf("%#U starts a position %dn", ch, i)
O que esse loop for faz é iterar pela string e imprimir a letra e a posição até que seja concluído. O código completo fica assim:
package main import "fmt" func main() { for i, ch := range "New Stack Rocks" { fmt.Printf("%#U starts a position %dn", ch, i) } }
Se você executar isso, a saída seria:
U+004E ‘N’ começa na posição 0
U+0065 ‘e’ inicia uma posição 1
U+0077 ‘w’ inicia uma posição 2
U+0020 ‘ ‘ inicia uma posição 3
U+0053 ‘S’ começa na posição 4
U+0074 ‘t’ começa na posição 5
U+0061 ‘a’ começa na posição 6
U+0063 ‘c’ começa na posição 7
U+006B ‘k’ começa na posição 8
U+0020 ‘ ‘ inicia uma posição 9
U+0052 ‘R’ começa na posição 10
U+006F ‘o’ começa na posição 11
U+0063 ‘c’ começa na posição 12
U+006B ‘k’ começa na posição 13
U+0073 ‘s’ começa na posição 14
Observe que usamos fmt.Printf() em vez de fmt.Println(). A razão para isso é que Printf permite formatar números, variáveis e strings, enquanto Println simplesmente imprime a linha como está. Se você usou fmt.Println em vez disso, a saída seria:
%#Você inicia uma posição %d 78 0
Claramente, isso não está correto, então temos que usá-lo fmt.Printf() em vez de.
E é assim que você escreve um loop for em sua nova linguagem favorita. Agora que você viu como funciona, está pronto para avançar para o próximo nível? Se sim, pronto, pronto, vá!
O post Golang: como escrever um loop For apareceu pela primeira vez em The New Stack.