Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
195 - Telegram Web
Telegram Web
Ответ на «Если в функции есть return, обязательно ли она вернет то, что указано в return?»

Мы
привыкли, что обычно, если код внутри функции добрался до 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
Вопрос с собеседования. Что такое ломтик Golang?

Ответ завтра.

#собеседование
🤡39🤣16👎1
Ответ на "Что такое ломтик 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
👍9👎3🔥2💩2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда Питонщик приходит в мир Golang
😁28👎10👍7🥴2
👣 Тестовое задание для Golang разработчика

Тестовое задание для кандидата на должность 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/
👍9🤡9👎1
🖥 Goose — инструмент для миграции баз данных

Может запускать миграции в виде файлов SQL на диске или встроенных в функции Go. Это означает, что вы можете отправить автономный двоичный файл для выполнения миграций без каких-либо зависимостей. Поддерживает неупорядоченные миграции. Имеется поддержка БД: Redshift, MySQL, Postgres, Clickhouse и другие.

Стоимость: #бесплатно.

$ go install github.com/pressly/goose/v3/cmd/goose@latest

🖥 Github
➡️ Инструкции к установке
👍11🔥1
👣 Что будет, если размер горутины превысил допустимый максимум?

Если размер стэка горутины превышен (к примеру, запустили бесконечную рекурсию), то приложение упадет с fatal error.

runtime: goroutine stack exceeds 1000000000-byte limit
fatal error: stack overflow
👌15
👍27🔥6🏆3👏1
👍4👏2
Go после Python: как я учу новый язык

Привет, Хабр! Меня зовут Максим Чижов, я бэкенд-инженер. Несколько месяцев назад мне понадобилось в довесок к основному языку Python выучить также Go. Расскажу, с какими проблемами я столкнулся в процессе и как их решал, а также где я сейчас.

💎 Чат: ссылка
💎 Канал по Golang: @golangprofi

Подробнее: https://habr.com/ru/company/avito/blog/594495/
👍7👎3💩2
Что Go грядущий нам готовит? Разбираем долгожданный релиз 1.19

Не успели мы до конца оправиться от долгожданного релиза Go 1.18 c дженериками, в котором нам предоставили дженерики, как команда Go анонсировала следующий бета-релиз Go 1.19.

💎 Чат: ссылка
💎 Канал по Golang: @golangprofi

Подробнее: https://habr.com/ru/company/ozontech/blog/674190/
🤡13👍7👎3🔥1🙈1🎅1
2025/07/12 09:13:06
Back to Top
HTML Embed Code: