100 ошибок Go и как их избежать
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабынан сөз тіркестері  100 ошибок Go и как их избежать

Алексадр Я.
Алексадр Я.дәйексөз келтірді2 жыл бұрын
Не программируйте интерфейсы, открывайте их.
1 Ұнайды
Комментарий жазу
Kalyuzh1n
Kalyuzh1nдәйексөз келтірді3 күн бұрын
Cond реализует переменную условия, точку встречи для горутин, ожидающих или объявляющих о возникновении события.
Комментарий жазу
Выровняйте «счастливый путь» (happy path) по левому краю — так вы сможете быстро просмотреть, что происходит ниже на каком-то одном уровне и увидеть, что на нем ожидаемо выполняется.
Комментарий жазу
Установка правила, запрещающего затененные переменные
Комментарий жазу
Даня
Данядәйексөз келтірді3 апта бұрын
Рис. 2.7. Есть зависимость пакета store от пакета client В пакете store мы определяем структуру InMemoryStore, реализующую интерфейс Store. Мы также создаем функцию NewInMemoryStore для возврата интерфейса Store. При таком дизайне есть зависимость пакета реализации от пакета потребителя, и это может показаться странным. Например, пакет client больше не может вызывать функцию NewInMemoryStore, в противном случае возникла бы циклическая зависимость. Возможным решением может быть вызов этой функции из другого пакета и внедрение реализации Store в client. Однако обязанность сделать это означает, что такой дизайн должен быть оспорен.
Комментарий жазу
Даня
Данядәйексөз келтірді3 апта бұрын
Интерфейсы полезны для создания абстракций. И главное предостережение при знакомстве программиста с абстракциями — это помнить, что абстракции нужно открывать, а не создавать. Это означает, что мы не должны начинать создавать абстракции в коде, если для этого нет веской причины. Нужно не конструировать интерфейсы, а ждать возникновения конкретной потребности в них. Иными словами, создавайте интерфейс только тогда, когда он действительно нужен, а не тогда, когда возникает лишь ощущение, что он может понадобиться.
Комментарий жазу
Даня
Данядәйексөз келтірді3 апта бұрын
Мы можем определить несколько функций инициализации init для каждого пакета. В таком случае последовательность выполнения функции инициализации внутри пакета задается алфавитным порядком исходных файлов
Комментарий жазу
Даня
Данядәйексөз келтірді3 апта бұрын
Рис. 2.2. Сначала выполняется функция инициализации init из пакета redis, затем функция инициа
Комментарий жазу
Даня
Данядәйексөз келтірді3 апта бұрын
инициализации. Вот пример инициализации пакета main: package main import "fmt" var a = func() int { fmt.Println("var") Исполняется в первую очередь return 0 }() func init() { fmt.Println("init") Исполняется во вторую очередь } func main() { fmt.Println("main") Исполняется в последнюю очередь } Исполнение кода этого примера выведет следующее: var init main
Комментарий жазу
Софья Мельник
Софья Мельникдәйексөз келтірді1 ай бұрын
Итоги • Go — это современный язык программирования, который позволяет повысить производительность разработчиков, что сегодня крайне важно для большинства компаний. • Go прост в изучении, но нелегок в освоении. Поэтому важно углубить свои знания, чтобы использовать его наиболее эффективно. • Обучение на разборе ошибок и на конкретных примерах — это мощный способ овладеть языком. Книга на примерах разбора 100 распространенных ошибок ускорит путь к профессиональному мастерству
Комментарий жазу