Основы Golang — Управление потоком


Этот пост является частью серии статей, в которых я собираюсь поделиться основными принципами разработки на GoLang.

В первом сообщении, о переменных, я упомянул, что системы работают с входом -> обработкой -> выходом. В этом посте мы разберемся в этом немного лучше.

Содержание
  1. Алгоритмы
  2. Этапы алгоритма
  3. Управление потоком
  4. Условия IF, ELSE, SWITCH
  5. Логическое выражение
  6. Операторы сравнения
  7. Логические операторы
  8. Простой пример
  9. ПЕРЕКЛЮЧАТЕЛЬ
  10. Для повторений
  11. Зарезервированное слово range

    В дополнение к приведенным выше примерам, при итерации со срезами и картами вы можете использовать range для обоих:

    personagens := []string{"Kurono", "Guts", "Eren"} // range te devolve duas variáveis, o índice e o valor for i, valor := range personagens { fmt.Println(i, valor) } Войдите в полноэкранный режим Выход из полноэкранного режима Точно такой же синтаксис, как и для карт personagemAnime := map[string]string{ "Eren": "Attack on Titan", "Guts": "Berserk", "Kurono": "Gantz", } for chave, valor := range personagemAnime { fmt.Println(chave, valor) } Войдите в полноэкранный режим Выход из полноэкранного режима Одна важная деталь, мы не всегда хотим работать с индексом массива или ключом карты, довольно часто мы просто перебираем значения, в этом случае нам нужно использовать символ _: personagens := []string{"Kurono", "Guts", "Eren"} for _, valor := range personagens { fmt.Println(valor) } Войдите в полноэкранный режим Выход из полноэкранного режима Резюме В этом посте вы увидели, как сделать управление потоком кода в Go и структуру алгоритма. И как бы это ни звучало преувеличенно, на самом деле это может сделать вас способным прочитать любой код. Но видите ли, если провести аналогию, это как если бы я познакомил вас с нотами на определенном инструменте. Теперь вы умеете читать ноты и с помощью упражнений можете начать играть свою версию. алгоритмы - это рецепты этапы алгоритма: вход, последовательность, условия, повторы, выход узнайте больше о логических выражениях изучить таблицу истинности и булеву алгебру
  12. Резюме

Алгоритмы

Каждая задача, выполняемая компьютером, является результатом работы алгоритма. Простое определение для понимания: алгоритмы — это рецепты с пошаговым описанием того, что должен делать компьютер.
В отличие от кулинарного рецепта, для компьютера необходимо указать все детали.

Этапы алгоритма

Каждый алгоритм можно разделить на несколько простых шагов:

  • ввод: чтение данных, которые хранятся в переменных.
  • последовательность: порядок, в котором должны происходить действия.
  • условия: управление потоком 👀
  • повторения: управление потоком 👀
  • выход: ответ на задачу, которую решает алгоритм.

Это звучит не так уж сложно, не так ли? Поняв эти шаги, вы сможете понять любое программное обеспечение, независимо от языка, парадигмы или фреймворка. Все они работают таким образом.
Самое приятное, что вы, вероятно, уже хорошо понимаете entry, потому что вы прочитали пост о переменных. Часть последовательности довольно проста для объяснения, и ее легко представить на примере. Итак, давайте перейдем к сути, к управлению потоком в Go.

Управление потоком

Условия IF, ELSE, SWITCH

Условия с IF в go очень похожи на C и его аналог, с некоторыми деталями.

if condicao {
    fmt.Println("faz algo genial")
}
Войдите в полноэкранный режим Выход из полноэкранного режима

У нас есть 3 вещи:

  • использование зарезервированного слова if.
  • условие (без круглых скобок) может быть булевой переменной или логическим выражением.
  • блок внутри скобок {...}, что в Go является обязательным.
// você também pode utilizar else...if 
if condicao {
    fmt.Println("faz algo genial")
} else if outra_condicao {
        fmt.Println("faz algo genial ao contrario")
} else {
        fmt.Println("desiste")
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Логическое выражение

Если это один из ваших первых контактов с программированием, этого материала, вероятно, будет недостаточно, но я надеюсь, что он может послужить для вас стимулом к поиску дополнительных знаний, оговорка сделана. Поехали.

Логические выражения могут иметь операторы сравнения и/или логические операторы.

Операторы сравнения

==    igual
!=    diferente
<     menor
<=    menor ou igual
>     maior
>=    maior ou igual
Войдите в полноэкранный режим Выход из полноэкранного режима

Логические операторы

&&    conjunção (AND)
||    disjunção (OR)
!     negação
Войдите в полноэкранный режим Выход из полноэкранного режима

Простой пример

// utilizando operador de comparação + operador lógico
if produto.status == publicado && produto.cor != azul {
    fmt.Println("Produto selecionado")
}
Войдите в полноэкранный режим Выход из полноэкранного режима

И это в основном то, как мы программируем принятие решений в коде. Опять же, если это один из ваших первых контактов, я посоветую вам следующее, посмотрите на
Булева алгебра
Таблица истинности

Не пугайтесь названий, это темы, которыми вам нужно заниматься и, если у вас есть возможность, пройти курс логики программирования.

ПЕРЕКЛЮЧАТЕЛЬ

Переключатели в Go очень гибкие, их можно использовать несколькими способами, самый распространенный способ — создание условий для наборов типов, опять же на примере нашего продукта:

// bastante comum de ser usado com tipos enumerados
switch produto.cor {
case vermelho:
    fmt.Println("Desconto 20% no vermelho")
case verde:
    fmt.Println("Desconto 10% no verde")
case azul:
    fmt.Println("Desconto 5% no azul")
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Другой возможный и также поощряемый синтаксис — использование пустого переключателя и случаев с логическими выражениями, это идиоматический способ избежать больших серий if..else..if:

switch {
case meuStatus != rascunho && meuStatus != deletado:
    fmt.Println("Faz algo com produtos diferentes de rascunhos")
case meuStatus == publicado || meuStatus != congelado:
    fmt.Println("Faz algo com publicados")
case meuStatus == congelado:
    fmt.Println("Faz algo com congelados")
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Более подробную информацию см. в документации:
Переключение_заявлений
Эффективный переключатель Go

Для повторений

В Go единственным зарезервированным словом для циклов повторения является for.
Давайте перейдем к некоторым быстрым примерам:

// loop infinito
for {
    fmt.Println("rodando... pra sempre")
    time.Sleep(time.Second * 1)
}
Войдите в полноэкранный режим Выход из полноэкранного режима
// repete enquanto a condição for verdadeira
for meuStatus != publicado {
    fmt.Println("rodando... pra sempre")
    time.Sleep(time.Second * 1)
        //... faz algum processamento que atualize meuStatus
}
Войдите в полноэкранный режим Выход из полноэкранного режима
// for incremental
// além a condição tem operação de inicialização: i := 0
// e uma pós operação para incrementar a variável
for i := 0; i < 10; i++ {
    fmt.Println(i)
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Зарезервированное слово range

В дополнение к приведенным выше примерам, при итерации со срезами и картами вы можете использовать range для обоих:

personagens := []string{"Kurono", "Guts", "Eren"}
// range te devolve duas variáveis, o índice e o valor
for i, valor := range personagens {
    fmt.Println(i, valor)
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Точно такой же синтаксис, как и для карт

personagemAnime := map[string]string{
    "Eren":   "Attack on Titan",
    "Guts":   "Berserk",
    "Kurono": "Gantz",
}
for chave, valor := range personagemAnime {
    fmt.Println(chave, valor)
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Одна важная деталь, мы не всегда хотим работать с индексом массива или ключом карты, довольно часто мы просто перебираем значения, в этом случае нам нужно использовать символ _:

personagens := []string{"Kurono", "Guts", "Eren"}
for _, valor := range personagens {
    fmt.Println(valor)
}
Войдите в полноэкранный режим Выход из полноэкранного режима

Резюме

В этом посте вы увидели, как сделать управление потоком кода в Go и структуру алгоритма. И как бы это ни звучало преувеличенно, на самом деле это может сделать вас способным прочитать любой код.
Но видите ли, если провести аналогию, это как если бы я познакомил вас с нотами на определенном инструменте. Теперь вы умеете читать ноты и с помощью упражнений можете начать играть свою версию.

  • алгоритмы - это рецепты
  • этапы алгоритма: вход, последовательность, условия, повторы, выход
  • узнайте больше о логических выражениях
  • изучить таблицу истинности и булеву алгебру

Оцените статью
Procodings.ru
Добавить комментарий