Ответ на «Если в функции есть return, обязательно ли она вернет то, что указано в return?»
Мы привыкли, что обычно, если код внутри функции добрался до return, то на выходе мы получим то, что стоит после return. Но в Go есть интересная особенность: если есть именованный выходной параметр (параметры), то функция вернет последнее его значение, несмотря на то, что написано в
Мы привыкли, что обычно, если код внутри функции добрался до return, то на выходе мы получим то, что стоит после return. Но в Go есть интересная особенность: если есть именованный выходной параметр (параметры), то функция вернет последнее его значение, несмотря на то, что написано в
return
.package main
import "fmt"
// Основной метод
func main() {
// функция возвращает два значения
m, d := calculator(105, 7)
fmt.Println("105 x 7 = ", m)
fmt.Println("105 / 7 = ", d)
}
// функция с именованными аргументами
func calculator(a, b int) (mul int, div int) {
defer func() {
mul = 95
div = 27
}()
// здесь простое назначение т.к. инициализация произошла выше
//функция вернет именно эти переменные
mul = a * b
div = a / b
// здесь у вас есть ключевое слово return
return 1, 2
}
Функция вернет в итоге: 95 и 27.👍21👎3😁1
В каком из следующих методов передачи параметров изменения, внесенные в параметр внутри функции, не влияют на аргумент?
Anonymous Quiz
66%
вызов по значению.
19%
вызов по ссылке
7%
оба вышеуказанные.
8%
ничего из вышеперечисленного.
💩19👍1
Что из следующего верно в отношении range в Go?
Anonymous Quiz
38%
Ключевое слово range используется для цикла для перебора элементов массива, среза, канала или карты.
6%
С массивом и срезами он возвращает индекс элемента как целое.
3%
С помощью карт он возвращает ключ следующей пары ключ-значение.
52%
Все вышеперечисленное.
👍1
🤡39🤣16👎1
Ответ на "Что такое ломтик Golang?"
В Golang сканирование срезов рассматривается как абстракция над обычными массивами. Как и массивы, они имеют индексы, длину и ссылку на другой массив. Массивы в Golang могут содержать переменные, которые могут иметь значения одного и того же типа, но их размеры не могут быть изменены динамически. В этом плане помогают ломтики.
#собеседование
В Golang сканирование срезов рассматривается как абстракция над обычными массивами. Как и массивы, они имеют индексы, длину и ссылку на другой массив. Массивы в Golang могут содержать переменные, которые могут иметь значения одного и того же типа, но их размеры не могут быть изменены динамически. В этом плане помогают ломтики.
#собеседование
🤯15🤡7😁4👍2💩2
👣 Какие есть примитивы синхронизации?
Ответ
➡️
Ответ
➡️
wait group;
➡️ mutex;
➡️ atomic;
➡️ sync map;
➡️ channel.
Что думаете?👍9
Простые трюки для экономии памяти в 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
👍9👎3🔥2💩2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда Питонщик приходит в мир Golang
😁28👎10👍7🥴2
👣 Тестовое задание для Golang разработчика
Тестовое задание для кандидата на должность Golang разработчика.
Описание
Есть внешний сервис, который обрабатывает некие абстрактные объекты батчами. Данный сервис может обрабатывать только определенное количество элементов n в заданный временной интервал p. При превышении ограничения, сервис блокирует последующую обработку на долгое время.
Задача заключается в реализации клиента к данному внешнему сервису, который позволит обрабатывать максимально возможное количество объектов без блокировки. Приводить реализацию внешнего сервиса необязательно!
Определение сервиса:
- язык программирования Golang.
- решение должно быть в git-репозитории (можно прислать архив или опубликовать на github, gitlab, bitbucket...).
Пожелания
- документирование кода;
- тесты;
- использование статического анализатора (конфигурацию положить в репозиторий).
Варианты решений можно присылать в комментарии.
❤️, если нравится такие задачи.
Тестовое задание для кандидата на должность Golang разработчика.
Описание
Есть внешний сервис, который обрабатывает некие абстрактные объекты батчами. Данный сервис может обрабатывать только определенное количество элементов n в заданный временной интервал p. При превышении ограничения, сервис блокирует последующую обработку на долгое время.
Задача заключается в реализации клиента к данному внешнему сервису, который позволит обрабатывать максимально возможное количество объектов без блокировки. Приводить реализацию внешнего сервиса необязательно!
Определение сервиса:
package main
import (
"context"
"errors"
"time"
)
// ErrBlocked reports if service is blocked.
var ErrBlocked = errors.New("blocked")
// Service defines external service that can process batches of items.
type Service interface {
GetLimits() (n uint64, p time.Duration)
Process(ctx context.Context, batch Batch) error
}
// Batch is a batch of items.
type Batch []Item
// Item is some abstract item.
type Item struct{}
Требования- язык программирования Golang.
- решение должно быть в git-репозитории (можно прислать архив или опубликовать на github, gitlab, bitbucket...).
Пожелания
- документирование кода;
- тесты;
- использование статического анализатора (конфигурацию положить в репозиторий).
Варианты решений можно присылать в комментарии.
❤️, если нравится такие задачи.
❤48👍7🔥5💩4
🐍 Почему мы перешли с Python на Go
Поставщик высоконагруженного API Stream перешёл с Python на Go, хотя этот язык знают немногие...
💎 Чат: ссылка
💎 Канал по Golang: @golangprofi
Подробнее: https://habr.com/ru/company/skillfactory/blog/669818/
Поставщик высоконагруженного API Stream перешёл с Python на Go, хотя этот язык знают немногие...
💎 Чат: ссылка
💎 Канал по Golang: @golangprofi
Подробнее: https://habr.com/ru/company/skillfactory/blog/669818/
👍9🤡9👎1
🖥 Goose — инструмент для миграции баз данных
Может запускать миграции в виде файлов SQL на диске или встроенных в функции Go. Это означает, что вы можете отправить автономный двоичный файл для выполнения миграций без каких-либо зависимостей. Поддерживает неупорядоченные миграции. Имеется поддержка БД: Redshift, MySQL, Postgres, Clickhouse и другие.
Стоимость: #бесплатно.
➡️ Инструкции к установке
Может запускать миграции в виде файлов SQL на диске или встроенных в функции Go. Это означает, что вы можете отправить автономный двоичный файл для выполнения миграций без каких-либо зависимостей. Поддерживает неупорядоченные миграции. Имеется поддержка БД: Redshift, MySQL, Postgres, Clickhouse и другие.
Стоимость: #бесплатно.
$ go install github.com/pressly/goose/v3/cmd/goose@latest
🖥 Github➡️ Инструкции к установке
👍11🔥1
👣 Что будет, если размер горутины превысил допустимый максимум?
Если размер стэка горутины превышен (к примеру, запустили бесконечную рекурсию), то приложение упадет с fatal error.
Если размер стэка горутины превышен (к примеру, запустили бесконечную рекурсию), то приложение упадет с fatal error.
runtime: goroutine stack exceeds 1000000000-byte limit
fatal error: stack overflow
👌15
Что выведет код?
Anonymous Quiz
22%
[7 6 5]
17%
[7 0 5 6]
43%
Ошибка компиляции
18%
Посмотреть ответ
👍27🔥6🏆3👏1
Что выведет код?
Anonymous Quiz
10%
0A,1B,2C
21%
0A,1Z,2Z
7%
0A,1M,2M
5%
0A,1M,2C
3%
0A,1Z,2M
7%
0A,1M,2Z
23%
Бесконечный цикл
24%
Посмотреть ответ
👎18💩4👍3
Go после Python: как я учу новый язык
Привет, Хабр! Меня зовут Максим Чижов, я бэкенд-инженер. Несколько месяцев назад мне понадобилось в довесок к основному языку Python выучить также Go. Расскажу, с какими проблемами я столкнулся в процессе и как их решал, а также где я сейчас.
💎 Чат: ссылка
💎 Канал по Golang: @golangprofi
Подробнее: https://habr.com/ru/company/avito/blog/594495/
Привет, Хабр! Меня зовут Максим Чижов, я бэкенд-инженер. Несколько месяцев назад мне понадобилось в довесок к основному языку Python выучить также Go. Расскажу, с какими проблемами я столкнулся в процессе и как их решал, а также где я сейчас.
💎 Чат: ссылка
💎 Канал по Golang: @golangprofi
Подробнее: https://habr.com/ru/company/avito/blog/594495/
👍7👎3💩2
Что выведет код?
Anonymous Quiz
9%
[0 1 2 3] [0 2 3 3 3]
9%
[0 2 3 3] [0 2 3 3 3]
40%
[0 1 2 3] [0 2 3 2 3]
11%
[0 2 3 3] [0 2 3 2 3]
31%
Посмотреть ответ
🤔15👍6❤1
Что Go грядущий нам готовит? Разбираем долгожданный релиз 1.19
Не успели мы до конца оправиться от долгожданного релиза Go 1.18 c дженериками, в котором нам предоставили дженерики, как команда Go анонсировала следующий бета-релиз Go 1.19.
💎 Чат: ссылка
💎 Канал по Golang: @golangprofi
Подробнее: https://habr.com/ru/company/ozontech/blog/674190/
Не успели мы до конца оправиться от долгожданного релиза Go 1.18 c дженериками, в котором нам предоставили дженерики, как команда Go анонсировала следующий бета-релиз Go 1.19.
💎 Чат: ссылка
💎 Канал по Golang: @golangprofi
Подробнее: https://habr.com/ru/company/ozontech/blog/674190/
🤡13👍7👎3🔥1🙈1🎅1