Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
«Дурак подкидной и переводной» — классика карточных игр! Яркий геймплей, простые правила. Развивайте стратегию, бросайте вызов соперникам и станьте королем карт! Играйте прямо сейчас!

Дурак подкидной и переводной

Карточные, Настольные, Логическая

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Golang + IT

С этим тегом используют

Программирование Программист Разработка IT юмор Юмор Работа Картинка с текстом Все
40 постов сначала свежее
9
NutrientElement
NutrientElement
1 год назад
Лига программистов
Серия Программирование

Интересные изменения в Golang 1.21⁠⁠

Golang 1.21 это новая версия языка программирования Go, которая была выпущена 15 октября 2023 года. В этой версии были внесены некоторые изменения в язык, инструменты и библиотеки.

Интересные изменения в Golang 1.21 Программирование, Программист, IT, Разработка, Golang
  • В язык были добавлены три новых встроенных функции: min, max и clear. Функции min и max вычисляют наименьшее (или наибольшее, для max) значение из фиксированного числа аргументов. Функция clear удаляет все элементы из карты или обнуляет все элементы среза. Подробнее см. спецификацию языка.

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

  • Было сделано несколько улучшений, которые повышают мощность и точность вывода типов. Теперь (возможно частично инстанцированная обобщенная) функция может быть вызвана с аргументами, которые сами являются (возможно частично инстанцированными) обобщенными функциями. Компилятор будет пытаться вывести отсутствующие типовые аргументы вызываемой функции (как и раньше) и, для каждого аргумента, который является обобщенной функцией, которая не полностью инстанцирована, ее отсутствующие типовые аргументы (новое). Типичные случаи использования - это вызовы обобщенных функций, работающих с контейнерами (например, slices.IndexFunc), где функциональный аргумент также может быть обобщенным, и где типовой аргумент вызываемой функции и ее аргументов выводится из типа контейнера.

  • В инструментах были сделаны различные улучшения производительности и исправления ошибок. Например: go build теперь поддерживает флаг -trimpath для удаления всей информации о файловой системе из скомпилированных исполняемых файлов; go vet теперь проверяет корректность использования R15 при динамической компоновке на amd64; go mod tidy теперь удаляет неиспользуемые замены из go.mod.

  • В библиотеках были добавлены новые пакеты и улучшены существующие. Например: был добавлен новый пакет log/slog для структурированного логирования; был добавлен новый пакет testing/slogtest для поддержки тестирования кода, использующего log/slog; был добавлен новый пакет slices для работы со срезами любого типа; был добавлен новый пакет maps для работы с картами любого типа; был добавлен новый пакет cmp для сравнения значений разных типов.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью
[моё] Программирование Программист IT Разработка Golang
0
NutrientElement
NutrientElement
1 год назад
Лига программистов
Серия Программирование

Небольшое сравнение C# и Go для backend⁠⁠

Выбор между C# и Go (Golang) для backend веб-разработки зависит от различных факторов, таких как требования проекта, опыт команды разработчиков и предпочтения.

Небольшое сравнение C# и Go для backend IT, Программист, Golang, Разработка, Backend, Программирование

C# является объектно-ориентированным языком программирования, разработанным Microsoft. Он широко используется для создания веб-приложений на платформе .NET. C# имеет мощную экосистему инструментов и библиотек, которые обеспечивают высокую производительность и эффективность разработки. Он также поддерживает многопоточность, асинхронное программирование и взаимодействие с базами данных. Если у вас есть опыт работы с .NET или если ваша команда уже знакома с C#, то он может быть хорошим выбором для backend веб-разработки.

Go (Golang) - это язык программирования, разработанный Google, который изначально был создан для решения проблем больших распределенных систем. Go обладает простым и понятным синтаксисом, который способствует быстрой разработке. Он также имеет встроенную поддержку параллельного и конкурентного программирования, что делает его хорошим выбором для создания высокопроизводительных и масштабируемых веб-приложений. Если вы и ваша команда предпочитаете простоту и эффективность разработки, Go может быть хорошим выбором.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью
[моё] IT Программист Golang Разработка Backend Программирование
7
4
NutrientElement
NutrientElement
1 год назад
Лига программистов
Серия Программирование

Важность метода close() в Golang⁠⁠

В Go, метод close является специальным методом, который используется для закрытия каналов, файлов, сетевых соединений и других ресурсов, которые требуют освобождения после использования.

Важность метода close() в Golang IT, Программирование, Программист, Golang


Вызов метода close важен по нескольким причинам:

  • Закрытие канала позволяет отправителям и получателям знать, что больше не будет передаваться никаких значений. Это может быть полезно для синхронизации горутин или предотвращения блокировки при чтении из канала. Если канал не будет закрыт, то получатели будут ждать новых значений бесконечно, а отправители могут получить ошибку при попытке отправить значение в полный канал.

  • Закрытие файла или сетевого соединения освобождает файловый дескриптор или порт, который был занят ресурсом. Это позволяет избежать утечки ресурсов и повысить производительность программы. Если файл или соединение не будет закрыто, то они будут занимать системные ресурсы до тех пор, пока программа не завершится или не будет принудительно закрыта операционной системой.

  • Закрытие ресурса также может сбросить буферы, которые используются для оптимизации записи или чтения данных. Это гарантирует, что все данные будут корректно записаны или прочитаны до закрытия ресурса. Если буферы не будут сброшены, то часть данных может быть потеряна или повреждена.

Для того, чтобы вызвать метод close, нужно убедиться, что ресурс поддерживает этот метод и что он еще не был закрыт. Некоторые ресурсы могут не иметь метода close или иметь другое название для этого метода (например, Flush или Done). Также важно избегать повторного закрытия ресурса, так как это может привести к ошибке или панике. Для этого можно использовать defer-выражение, которое гарантирует, что метод close будет вызван один раз при выходе из функции.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью
[моё] IT Программирование Программист Golang
3
NutrientElement
NutrientElement
1 год назад
Серия Программирование

Канализация Golang(Каналы)⁠⁠

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

Канализация Golang(Каналы) Программирование, Программист, Golang, IT, Познавательно

Небуферизированный канал — это канал, который не имеет внутреннего хранилища для значений. Каждая операция отправки или получения на таком канале блокирует горутину, пока другая горутина не выполнит соответствующую операцию. Это означает, что небуферизированный канал служит точкой синхронизации между горутинами и гарантирует, что значение будет доставлено полностью.

Буферизированный канал — это канал, который имеет внутреннее хранилище для значений определенной емкости. Операция отправки на таком канале блокирует горутину только в том случае, если буфер заполнен, а операция получения блокирует горутину только в том случае, если буфер пуст. Это означает, что буферизированный канал позволяет горутинам работать асинхронно и обмениваться значениями без ожидания.

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

Двунаправленный канал — это канал, который поддерживает обе операции отправки и получения. Двунаправленные каналы являются наиболее общими и универсальными видами каналов в Go. Двунаправленные каналы можно создавать с помощью ключевого слова chan без указания направления.

Закрытый канал — это канал, на который больше нельзя отправлять значения. Закрытый канал полезен для сигнализации о завершении работы горутин или об окончании потока данных. Закрытый канал можно создать с помощью функции close, которая принимает канал в качестве аргумента. После закрытия канала можно продолжать получать значения из него, пока буфер не опустеет, а затем получать нулевые значения типа канала. Также можно использовать второй возвращаемый параметр оператора <- для проверки, закрыт ли канал или нет.

Интересные факты и фичи языков программирования у нас в канале, заходи :)

Показать полностью 1
[моё] Программирование Программист Golang IT Познавательно
9
Ghargatuloth
Ghargatuloth
1 год назад
Серия Алгоритмы и структуры golang

Бинарные деревья Golang pt3⁠⁠

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Hello my Dudes

Бинарное дерево - это структура данных, которая представляет собой иерархическую коллекцию элементов, называемых узлами (nodes). Каждый узел имеет значение и может иметь до двух дочерних узлов, называемых левым и правым потомками (left and right children). Узел, который не имеет родителя, называется корнем (root) дерева. Узел, который не имеет потомков, называется листом (leaf) дерева.

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Бинарные деревья могут быть использованы для решения различных задач, связанных с поиском, сортировкой, классификацией и вычислением данных. Например, бинарное дерево поиска (binary search tree) - это бинарное дерево, в котором для каждого узла выполняется условие: все значения в левом поддереве меньше значения узла, а все значения в правом поддереве больше или равны значению узла. Бинарное дерево поиска позволяет быстро находить, добавлять и удалять элементы по заданному ключу.

В голанг нет встроенного типа для бинарных деревьев, но их можно реализовать с помощью структур (structs) и указателей (pointers). Для создания бинарного дерева в голанг нужно определить тип узла и тип дерева:

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Для добавления элемента в бинарное дерево поиска нужно написать функцию, которая принимает указатель на дерево и значение, которое нужно добавить. Функция должна найти подходящее место для нового узла в дереве и связать его с родителем:

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост
Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Для поиска элемента в бинарном дереве поиска нужно написать функцию, которая принимает указатель на дерево и значение, которое нужно найти. Функция должна вернуть указатель на узел, содержащий искомое значение, или nil, если такого узла нет в дереве:

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Для удаления элемента из бинарного дерева поиска нужно написать функцию, которая принимает указатель на дерево и значение, которое нужно удалить. Функция должна найти узел, содержащий удаляемое значение, и заменить его подходящим узлом из поддеревьев:

Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост
Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост
Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост
Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост
Бинарные деревья Golang pt3 IT, Программирование, Обучение, Golang, Длиннопост

Могут быть косяки, не судите строго. У меня через 20 минут созвон (я их очень не люблю).

Показать полностью 10
[моё] IT Программирование Обучение Golang Длиннопост
3
587
user5395992
1 год назад

No log november⁠⁠

No log november Юмор, Программирование, IT, X (Twitter), Golang, Скриншот, IT юмор
Показать полностью 1
Юмор Программирование IT X (Twitter) Golang Скриншот IT юмор
98
Ghargatuloth
Ghargatuloth
1 год назад
Серия Алгоритмы и структуры golang

Алгоритмы поиска в гошечке (golang)⁠⁠

Привет, чувачёчки.

В этом посте я хочу поделиться с вами кодом на Go для некоторых популярных алгоритмов поиска.

Наслаждайтесь.

Линейный поиск

Линейный поиск (Linear Search) - это простой алгоритм поиска элемента в списке, массиве или коллекции. Он работает путем последовательного перебора всех элементов до тех пор, пока не будет найден искомый элемент или не будут проверены все элементы.

Описание алгоритма:

1. Начните с первого элемента списка.

2. Сравните его с искомым элементом.

3. Если элемент совпадает с искомым, верните его индекс (или значение, в зависимости от реализации).

4. Если элемент не совпадает с искомым, перейдите к следующему элементу в списке.

5. Повторяйте шаги 2-4 до тех пор, пока не найдете искомый элемент или не пройдете весь список.

Линейный поиск имеет временную сложность O(n), где "n" - это количество элементов в списке. В худшем случае алгоритм может проверить все элементы, поэтому его производительность ухудшается с ростом размера списка.

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

Алгоритмы поиска в гошечке (golang) IT, Обучение, Golang, Алгоритм, Программирование, Длиннопост

Бинарный поиск

Бинарный поиск (Binary Search) - это эффективный алгоритм поиска элемента в отсортированном списке, массиве или коллекции. Он использует стратегию "разделяй и властвуй", что позволяет быстро находить искомый элемент.

Описание алгоритма:

1. Начните с определения границ поиска. Установите начальную границу (left) в начало списка и конечную границу (right) в его конец.

2. Найдите средний элемент между начальной и конечной границей.

3. Сравните средний элемент с искомым значением.

4. Если средний элемент совпадает с искомым значением, возвращаем его индекс (или значение, в зависимости от реализации).

5. Если средний элемент больше искомого значения, обновите конечную границу (right) на позицию перед средним элементом и перейдите к шагу 2.

6. Если средний элемент меньше искомого значения, обновите начальную границу (left) на позицию после среднего элемента и перейдите к шагу 2.

7. Повторяйте шаги 2-6 до тех пор, пока не будет найден искомый элемент или пока начальная граница (left) не станет больше конечной границы (right).

Бинарный поиск имеет временную сложность O(log n), где "n" - это количество элементов в списке. Это означает, что в худшем случае алгоритм будет выполняться за логарифмическое время, что является значительно более эффективным, чем линейный поиск.

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

Алгоритмы поиска в гошечке (golang) IT, Обучение, Golang, Алгоритм, Программирование, Длиннопост

Прыжковый поиск

Прыжковый поиск (Jump Search) - это алгоритм поиска элемента в отсортированном списке, массиве или коллекции. Он использует идею деления интервала на блоки и прыжки через эти блоки для быстрого приближения к искомому элементу.

Описание алгоритма:

1. Задайте размер прыжка (jump size). Обычно он выбирается как квадратный корень из общего количества элементов в списке.

2. Начните с первого элемента списка.

3. Сравните текущий элемент с искомым значением.

4. Если текущий элемент равен искомому значению, верните его индекс (или значение, в зависимости от реализации).

5. Если текущий элемент больше искомого значения или достигнут конец списка, перейдите к следующему шагу.

6. Сделайте прыжок через блоки, перемещаясь вперед на размер прыжка.

7. Повторяйте шаги 3-6 до тех пор, пока текущий элемент не станет больше искомого значения или вы превысите границы списка.

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

9. Если элемент найден, верните его индекс (или значение, в зависимости от реализации).

10. Если элемент не найден, верните -1 (или другое значение, указывающее отсутствие элемента).

Прыжковый поиск имеет временную сложность O(√n), где "n" - количество элементов в списке. Он более эффективен, чем линейный поиск, но менее эффективен, чем бинарный поиск. Однако прыжковый поиск особенно полезен, когда список имеет равномерное распределение данных и доступ к элементам осуществляется за постоянное время.

Важно отметить, что прыжковый поиск также требует отсортированного списка для правильного функционирования.

Алгоритмы поиска в гошечке (golang) IT, Обучение, Golang, Алгоритм, Программирование, Длиннопост

В общем: да прибудет с вами сила.

Постепенно цикл буду дополнять.

Показать полностью 3
[моё] IT Обучение Golang Алгоритм Программирование Длиннопост
3
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
223
Ghargatuloth
Ghargatuloth
2 года назад
Серия Алгоритмы и структуры golang

Алгоритмы и структуры в гошечке (golang) Pt1⁠⁠

Алгоритмы сортировки

Цимес: Тема крайне важна, в русскоязычном сегменте - мало представлена.

Таки будем исправлять.

Тема очень простая, важно начать, даже такой "укурок" как я осилил.

В общем - начнём мои чувачёчки...

Сортировка "Пузырьком"

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

Алгоритмы и структуры в гошечке (golang) Pt1 IT, Golang, Алгоритм, Обучение, Видео, YouTube, Длиннопост

Халява, идём дальше.

Рекурсивная сортировка "пузырьком"

Рекурсивная сортировка пузырьком - это вариант обычной сортировки пузырьком (также известной как итеративная сортировка пузырьком). Она работает так же, как и итеративная сортировка пузырьком, без дополнительных преимуществ по времени или сложности. Однако это улучшит ваше понимание сортировки пузырьком и рекурсии.

Алгоритмы и структуры в гошечке (golang) Pt1 IT, Golang, Алгоритм, Обучение, Видео, YouTube, Длиннопост

Тоже простенько.

Сортировка вставками

Сортировка вставками (Insertion Sort) - это алгоритм сортировки, в котором элементы входного массива поочередно выбираются и вставляются в отсортированную последовательность элементов. Каждый новый элемент сравнивается с уже отсортированными элементами, и вставляется в нужное место в последовательности. Этот процесс продолжается до тех пор, пока все элементы не будут отсортированы.

Алгоритмы и структуры в гошечке (golang) Pt1 IT, Golang, Алгоритм, Обучение, Видео, YouTube, Длиннопост
Алгоритмы и структуры в гошечке (golang) Pt1 IT, Golang, Алгоритм, Обучение, Видео, YouTube, Длиннопост

По мне - так ещё проще, строк то меньше

Сортировка выбором

Сортировка выбором (Selection Sort) - это алгоритм сортировки, который проходит по массиву и находит наименьший элемент, затем помещает его в начало массива. Затем алгоритм проходит по оставшейся части массива и находит следующий наименьший элемент, помещая его на следующую позицию в массиве. Этот процесс продолжается до тех пор, пока все элементы не будут отсортированы. Время выполнения сортировки выбором в худшем, среднем и лучшем случае составляет O(n^2), где n - количество элементов в массиве.

Алгоритмы и структуры в гошечке (golang) Pt1 IT, Golang, Алгоритм, Обучение, Видео, YouTube, Длиннопост
Алгоритмы и структуры в гошечке (golang) Pt1 IT, Golang, Алгоритм, Обучение, Видео, YouTube, Длиннопост

Чуточку сложнее... Продолжаем

Сортировка слиянием

Сортировка слиянием (Merge Sort) - это алгоритм сортировки, который упорядочивает элементы массива путем разделения его на две половины, сортировки каждой половины отдельно, а затем слияния отсортированных половин в один отсортированный массив. Алгоритм сортировки слиянием является эффективным и обычно используется для сортировки больших массивов. Время выполнения сортировки слиянием в худшем, среднем и лучшем случае составляет O(n log n), где n - количество элементов в массиве.

Алгоритмы и структуры в гошечке (golang) Pt1 IT, Golang, Алгоритм, Обучение, Видео, YouTube, Длиннопост
Алгоритмы и структуры в гошечке (golang) Pt1 IT, Golang, Алгоритм, Обучение, Видео, YouTube, Длиннопост

Стало интереснее

Сортировка подсчётом

Сортировка подсчётом (Counting Sort) - это алгоритм сортировки, который использует диапазон чисел в сортируемом массиве для подсчета количества совпадающих элементов. Затем элементы сортируются путем перебора диапазона и записи каждого элемента в выходной массив в соответствии с его количеством входных элементов. Алгоритм сортировки подсчетом является эффективным для сортировки массивов с небольшим диапазоном значений. Время выполнения сортировки подсчетом составляет O(n + k), где n - количество элементов в массиве, а k - размер диапазона значений.

Алгоритмы и структуры в гошечке (golang) Pt1 IT, Golang, Алгоритм, Обучение, Видео, YouTube, Длиннопост

В общем то на алгоритмах сортировки мы закончим, но это не всё!

Побольше кодим, поменьше задротим и всё у нас будет хорошо.

Показать полностью 9 1
[моё] IT Golang Алгоритм Обучение Видео YouTube Длиннопост
80
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии