Golang вопросы собеседований
@notxxx1 - админ @Golang_google - Golang для разработчиков @itchannels_telegram - 🔥лучшие из ит @golangl - chat @golangtests - golang tests @golang_jobsgo - go chat jobs @ai_machinelearning_big_data - AI @data_analysis_ml РКН: clck.ru/3FmtKd
نمایش بیشتر📈 تحلیل کانال تلگرام Golang вопросы собеседований
کانال Golang вопросы собеседований (@golang_interview) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 14 951 مشترک است و جایگاه 8 678 را در دسته فناوری و برنامهها و رتبه 44 803 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 14 951 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 09 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 60 و در ۲۴ ساعت گذشته برابر 14 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 35.08% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 8.88% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 5 245 بازدید دریافت میکند. در اولین روز معمولاً 1 327 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 25 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند git, docker, github, контейнер, sql تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“@notxxx1 - админ
@Golang_google - Golang для разработчиков
@itchannels_telegram - 🔥лучшие из ит
@golangl - chat
@golangtests - golang tests
@golang_jobsgo - go chat jobs
@ai_machinelearning_big_data - AI
@data_analysis_ml
РКН: clck.ru/3Fmt...”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 10 ژوئن, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
func MapFromRecipeToToRecipe(source *from.Recipe) to.Recipe {
if source == nil {
return to.Recipe{}
}
var target to.Recipe
target.ID = to.RecipeID(source.RecipeId)
target.Name = source.Name
target.Servings = int(source.Servings)
return target
}
На одном маппере это терпимо. На десятках типов начинается боль: забытые поля, кривые конверсии, ручная синхронизация после каждого изменения схемы.
Morph генерирует такой код автоматически и умеет работать не только с простыми структурами.
Что поддерживает:
* structs и enums
* basic types, pointers, slices, arrays, maps
* nested structs
* concrete generic containers
* safe и настроенные type conversions
* вложенные сгенерированные мапперы
* пользовательские callables для сложной логики
* discovery готовых mapping-функций из указанных пакетов
* presets, чтобы не дублировать конфиг для типовых сценариев
Самый полезный случай - protobuf → idiomatic Go model. protoc часто генерирует не тот код, который хочется таскать по доменному слою: другие имена, другие типы, timestamp-обёртки, enum-формат, optional-поля. Morph позволяет описать правила один раз и дальше генерировать нормальные мапперы.
Запуск простой:
go install github.com/seeruk/morph/cmd/morph@latest
morph
Конфигурация живёт в morph.yaml, а сам инструмент можно использовать и как CLI, и как библиотеку внутри более сложных codegen-пайплайнов.
Хороший вариант для Go-проектов, где ручной mapping уже стал отдельным источником багов и мусорного кода.
GitHub:
https://github.com/seeruk/morph
#golangstrings.Index + slicing, ручной clamp через if, хелперы вроде newInt, старые циклы и куча мелочей, которые уже можно записать короче, безопаснее и понятнее.
Что появилось:
- go fix в Go 1.26 переписали и усилили анализаторами
- он умеет модернизировать код под новые возможности языка и стандартной библиотеки
- может заменять старые паттерны на min/max, strings.Cut, range по int и другие более чистые формы
- для Go 1.26 появился new(expr), который убирает кучу вспомогательных функций для указателей на значения
- часть таких подсказок уже попадает в gopls, то есть IDE может показывать их прямо во время работы
Пример, где это особенно приятно: раньше для optional-поля часто писали newInt(10) или ptr.To(10). В Go 1.26 можно проще:
Attempts: new(10)
Мелочь, но таких мелочей в большом Go-проекте сотни.
go fix теперь стоит запускать не один раз в жизни при миграции, а после обновления toolchain. Желательно из чистого git-состояния, чтобы ревью потом смотрело только автоматические изменения.
Zзык остаётся консервативным, но экосистема постепенно учится сама вычищать старые шаблоны и подтягивать проекты к более читаемому стилю.
#golang
https://altafino.com/blog/using-go-1-25-and-go-1-26-to-write-cleaner-more-maintainable-go-3ETksqLv07ShL2dFmF6LVndO8Psunable to get user: failed to query users table: connection refused
Когда плохо - в логах остаётся просто connection refused, и потом никто не понимает, где именно это произошло.
Проблема в том, что такой контекст надо постоянно поддерживать. Код меняется, старые сообщения устаревают, кто-то забывает завернуть ошибку, и история разваливается.
Автор предлагает практичный компромисс: добавлять stack trace в момент, когда приложение создаёт ошибку или впервые получает её от сторонней библиотеки. Тогда у команды всегда есть базовая точка опоры, а ручной контекст можно добавлять там, где он действительно нужен.
Хорошие ошибки в Go должны не просто сообщать, что всё упало. Они должны рассказывать, как именно оно к этому пришло.
https://robinsiep.com/blog/posts/go-errors/
#golang
package main
import (
"fmt"
"hash/fnv"
"math/bits"
)
const registersCount = 16
type HyperLogLog struct {
registers [registersCount]uint8
}
func hash64(s string) uint64 {
h := fnv.New64a()
_, _ = h.Write([]byte(s))
return h.Sum64()
}
func (hll *HyperLogLog) Add(value string) {
hash := hash64(value)
// первые 4 бита выбирают регистр: 2^4 = 16
index := hash >> 60
// остальные биты используем для поиска серии нулей
rest := hash << 4
// сколько нулей подряд в начале
zeros := uint8(bits.LeadingZeros64(rest) + 1)
if zeros > hll.registers[index] {
hll.registers[index] = zeros
}
}
func main() {
hll := HyperLogLog{}
values := []string{
"user_1",
"user_2",
"user_3",
"user_1",
"user_2",
"user_4",
"user_5",
}
for _, v := range values {
hll.Add(v)
}
fmt.Println(hll.registers)
}
Это не полноценный Redis HyperLogLog, а понятная учебная версия.
Что тут важно:
• дубликаты дают тот же хеш
• один и тот же хеш попадает в тот же регистр
• регистр хранит только максимум найденных нулей
• сами user_1, user_2, user_3 не сохраняются
• память остаётся почти постоянной
В Redis всё серьёзнее: там 16 384 регистра, аккуратная математика для оценки cardinality и поправки на маленькие и большие значения.O(n) при n = 16 и тёплом кэше может быть быстрее, чем O(1) с холодным cache miss.
Big O описывает асимптотический рост, а не реальную скорость на маленьких данных.matcha send без интерактивного интерфейса.
Для тех, кто любит терминал, Go и красивые TUI-приложения - проект точно стоит посмотреть.
https://github.com/floatpane/matcha
#golanggo func() скрываются work stealing, preemption, blocking syscalls, queues, stacks, parking и постоянная борьба за баланс между latency и throughput.
Для разработчика это полезно не ради теории. Когда понимаешь M:N модель, становится проще объяснить, почему одна программа летает на тысячах соединений, а другая внезапно упирается в scheduler, locks или blocking I/O.
Go выглядит простым снаружи. Но внутри его конкурентность - это очень плотный кусок runtime-инженерии.
0xkiire.com/mn-concurrency-model/
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
