Интерфейсы в Go — как красиво выстрелить себе в ногу
Первый очерк из цикла приключений в мире сусликов.
С этой статьи начинается серия небольших рассказов о необычных подводных камнях, которые можно встретить в начале разработки на Go. В статьях будут примеры кода, будьте с ними аккуратнее - не все из них будут компилироваться и работать, читайте внимательно комментарии, везде будет указано, на какой строке происходит ошибка. Также в блоках кода везде табуляция заменена на пробелы - это сделано намеренно, чтобы статьи выглядели у всех одинаково.
💎 Чат: ссылка
Подробнее: https://habr.com/ru/post/597461/
Первый очерк из цикла приключений в мире сусликов.
С этой статьи начинается серия небольших рассказов о необычных подводных камнях, которые можно встретить в начале разработки на Go. В статьях будут примеры кода, будьте с ними аккуратнее - не все из них будут компилироваться и работать, читайте внимательно комментарии, везде будет указано, на какой строке происходит ошибка. Также в блоках кода везде табуляция заменена на пробелы - это сделано намеренно, чтобы статьи выглядели у всех одинаково.
💎 Чат: ссылка
Подробнее: https://habr.com/ru/post/597461/
👍3
Создание базового RESTful (CRUD) с помощью Golang и MySQL
Мы будем разрабатывать приложение, которое предоставляет базовый сервер REST-API для операций CRUD для управления пользователями (id, firstName, lastName, age).
💎 Чат: ссылка
Подробнее: http://bit.ly/3IVkozD
Мы будем разрабатывать приложение, которое предоставляет базовый сервер REST-API для операций CRUD для управления пользователями (id, firstName, lastName, age).
💎 Чат: ссылка
Подробнее: http://bit.ly/3IVkozD
👍5👎2
👍2
Пишем frontend на Golang
1. Вас задрало, что node_modules на простом сайте соревнуются по количеству используемого места с вашей коллекцией музыки?
2. Вы перечитали инструкцию к Redux в шестидесятый раз и поняли две вещи: "До меня кажется доходит..." и "Думаю, мне стоит перечитать это ещё раз!"
3. Вы в очередной раз узнали, что 1 + "1" == "11", а [] - {} == NaN?
4. Билд скрипт в webpack занимает больше места чем ваша библиотека на javascript?
Чат: ссылка
Подробнее: https://habr.com/ru/post/567440/
1. Вас задрало, что node_modules на простом сайте соревнуются по количеству используемого места с вашей коллекцией музыки?
2. Вы перечитали инструкцию к Redux в шестидесятый раз и поняли две вещи: "До меня кажется доходит..." и "Думаю, мне стоит перечитать это ещё раз!"
3. Вы в очередной раз узнали, что 1 + "1" == "11", а [] - {} == NaN?
4. Билд скрипт в webpack занимает больше места чем ваша библиотека на javascript?
Чат: ссылка
Подробнее: https://habr.com/ru/post/567440/
😁5👍1👏1🤮1
Что выведет код?
Anonymous Quiz
20%
012 789
20%
012 987
15%
222 789
18%
222 999
26%
Посмотреть ответы
👍3
Простые трюки для экономии памяти в Golang
При меньшем объеме памяти снижаются затраты на инфраструктуру, а масштабирование становится немного проще. Несмотря на то, что Go известен тем, что не потребляет много памяти, существуют способы дополнительно уменьшить ее потребление.
💎 Чат: ссылка
PS: Прикрепленная картинка была сгенерирована нейронной сетью Midjourney по запросу "new golang logo". Мы уже заменили иконку сайта Golangify на 3й из сгенерированных логотипов.
Подробнее: https://golangify.com/memory-saving-slice-struct-map
При меньшем объеме памяти снижаются затраты на инфраструктуру, а масштабирование становится немного проще. Несмотря на то, что Go известен тем, что не потребляет много памяти, существуют способы дополнительно уменьшить ее потребление.
💎 Чат: ссылка
PS: Прикрепленная картинка была сгенерирована нейронной сетью Midjourney по запросу "new golang logo". Мы уже заменили иконку сайта Golangify на 3й из сгенерированных логотипов.
Подробнее: https://golangify.com/memory-saving-slice-struct-map
👍6
🏃 Пишем мессенджер на Go за час: 7 простых шагов от эхо-сервера к асинхронному обмену сообщениями
Авторы большинства статей по сокетным соединениям в примерах ограничиваются реализацией эхо-сервера. Давайте разовьем эту тему и за 7 простых шагов сделаем вместе консольный мессенджер сообщений.
Чат: ссылка
Подробнее: http://bit.ly/3GIDshM
Авторы большинства статей по сокетным соединениям в примерах ограничиваются реализацией эхо-сервера. Давайте разовьем эту тему и за 7 простых шагов сделаем вместе консольный мессенджер сообщений.
Чат: ссылка
Подробнее: http://bit.ly/3GIDshM
👎6👍2
Имплементируем WebSocket протокол на Go
Благодаря стандартной библиотеке написать многопоточный веб-сервер на Go проще чем на любом другом языке.
💎 Чат: ссылка
Подробнее: https://habr.com/ru/post/674694/
Благодаря стандартной библиотеке написать многопоточный веб-сервер на Go проще чем на любом другом языке.
💎 Чат: ссылка
Подробнее: https://habr.com/ru/post/674694/
Ответ
package main
import (
"fmt"
"io"
"os"
)
func FprintArray[T any](w io.Writer, arr []T) {
if len(arr) == 0 {
return
}
fmt.Fprintf(w, "%v", arr[0])
for _, obj := range arr[1:] {
fmt.Fprintf(w, ", %v", obj)
}
}
func main() {
arr := []int{155, 133, 127, 123, 117, 105, 104, 98, 94, 90, 77, 76, 70, 55, 50, 45, 43, 42, 37, 29}
fmt.Print("[")
FprintArray(os.Stdout, arr)
fmt.Println("]")
}
Пишите свое решение в комментариях👇Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤔2
Полезная статья на Хабр о Конкурентности Go
В ней Golang-разработчик в МТС Digital Артем Чаадаев собрал и подробно разобрал наиболее подходящие примеры использования конкурентного кода в Go на основе личного опыта.
💎 Чат: ссылка
Подробнее: https://habr.com/ru/company/ru_mts/blog/680324/
В ней Golang-разработчик в МТС Digital Артем Чаадаев собрал и подробно разобрал наиболее подходящие примеры использования конкурентного кода в Go на основе личного опыта.
💎 Чат: ссылка
Подробнее: https://habr.com/ru/company/ru_mts/blog/680324/
👍3
Вышла новая версия Golang 1.20
⭐️ Усовершенствования компилятора и сборщика мусора позволили снизить затраты памяти и повысить общую производительность процессора на 2%.
⭐️ Работа, направленная непосредственно на время компиляции, привела к улучшению сборки на 10%. Это вернуло скорость сборки в соответствие с Go 1.17.
💎 Чат: ссылка
Подробнее: https://golangify.com/new-go1-20
⭐️ Усовершенствования компилятора и сборщика мусора позволили снизить затраты памяти и повысить общую производительность процессора на 2%.
⭐️ Работа, направленная непосредственно на время компиляции, привела к улучшению сборки на 10%. Это вернуло скорость сборки в соответствие с Go 1.17.
💎 Чат: ссылка
Подробнее: https://golangify.com/new-go1-20
👏6🤔2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда Питонщик приходит в мир Golang
😁25👍8
Уменьшаем количество ошибок в коде и пишем линтеры под конкретные проекты быстро и без лишней боли. Как? Ребята из Delivery Club отвечают в последнем кейсе про анализ синтаксиса.
Из статьи вы узнаете про неочевидные приемы автоматизации проверки кода, познакомитесь с go-ruleguard и другими хитростями разработчиков Delivery Club.
Все подробности по ссылке.
Из статьи вы узнаете про неочевидные приемы автоматизации проверки кода, познакомитесь с go-ruleguard и другими хитростями разработчиков Delivery Club.
Все подробности по ссылке.
❤1👍1
Notify - интересная библиотека на Golang для отправки одного сообщения на несколько мессенджеров. Отличный инструмент, чтобы по среди ночи узнать от бота, что джун уронил прод.
https://github.com/nikoksr/notify
https://github.com/nikoksr/notify
👍12🔥5😁3
Задача с leetcode. Контейнер с наибольшим количеством воды
Дан целочисленный массив height длины n. Нарисовано n вертикальных линий, две конечные точки i-й линии равны (
Верните максимальное количество воды, которое может храниться в контейнере. Обратите внимание, что вы не можете наклонять контейнер.
Пример 1 (картинка):
Ввод:
Объяснение: Вышеуказанные вертикальные линии представлены массивом
Пример 2:
Ввод:
Решение:
Дан целочисленный массив height длины n. Нарисовано n вертикальных линий, две конечные точки i-й линии равны (
i, 0
) и (i, height[i]
). Найдите две линии, которые вместе с осью абсцисс образуют контейнер, содержащий наибольшее количество воды. Верните максимальное количество воды, которое может храниться в контейнере. Обратите внимание, что вы не можете наклонять контейнер.
Пример 1 (картинка):
Ввод:
height = [1,8,6,2,5,4,8,3,7]
Вывод: 49 Объяснение: Вышеуказанные вертикальные линии представлены массивом
[1,8,6,2,5,4,8,3,7].
В этом случае максимальная площадь воды (синяя секция), которую может содержать контейнер, составляет 49.Пример 2:
Ввод:
height = [1,1]
Вывод: 1Решение:
func maxArea(height []int) int {
var maxArea int = 0
var i int = 0
var j int = len(height)-1
var result int = 0
for i < j {
if(height[i] <= height[j]) {
result = height[i] * (j-i)
i++
} else {
result = height[j] * (j-i)
j--
}
if(result > maxArea) {
maxArea = result
}
}
return maxArea
}
Пишите свое решение в комментариях👇👍7🔥1💩1🤡1
🔼 🔽 Bittorrent с нуля на Go
BitTorrent — протокол загрузки и распространения файлов через Интернет. В отличие от традиционных отношений клиент/сервер, когда загрузчики подключаются к центральному серверу (например, для просмотра фильма на Netflix или загрузки веб-страницы), участники сети BitTorrent, называемые одноранговыми узлами, загружают фрагменты файлов друг с друга.
💎 Чат: ссылка
Читать статью
BitTorrent — протокол загрузки и распространения файлов через Интернет. В отличие от традиционных отношений клиент/сервер, когда загрузчики подключаются к центральному серверу (например, для просмотра фильма на Netflix или загрузки веб-страницы), участники сети BitTorrent, называемые одноранговыми узлами, загружают фрагменты файлов друг с друга.
💎 Чат: ссылка
Читать статью
🔥5👍2❤1