В отличие от Java или C#, в Go интерфейсы не требуют явного указания их реализации. Вместо этого соответствие определяется автоматически, если тип содержит методы, описанные в интерфейсе. Это упрощает код и уменьшает количество зависимостей.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2💊1
Anonymous Quiz
89%
Компиляция
5%
Интерпретация
0%
Скриптинг
5%
Ассемблирование
🤯6😁2
Anonymous Quiz
19%
go run tests
1%
go execute
79%
go test
1%
go check
Интерфейс состоит из двух частей: указателя на динамический тип и указателя на данные, связанные с этим типом. Такая структура позволяет интерфейсу хранить и управлять значениями разных типов динамически.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
Anonymous Quiz
7%
Удаляет неиспользуемые файлы
1%
Оптимизирует код
64%
Обновляет зависимости
28%
Удаляет неиспользуемые зависимости
💊24👍2
Anonymous Quiz
1%
Компиляция
37%
Инкапсуляция
43%
Модуляризация
19%
Рефакторинг
💊1
Это интерфейс, в котором отсутствует тип и значение. Если интерфейс имеет тип, но значение равно nil, он больше не считается полностью nil.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯4
Anonymous Quiz
70%
TypeOf()
20%
GetType()
10%
ReflectType()
0%
DetermineType()
Anonymous Quiz
10%
-cover
51%
-bench
19%
-trace
21%
-cpuprofile
Это механизм проверки типа значения интерфейса. Например, он позволяет выполнить разные действия в зависимости от того, является ли значение строкой, числом или структурой.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Anonymous Quiz
37%
-run
14%
-race
42%
-v
7%
-short
Anonymous Quiz
11%
T.Error
50%
T.FailNow
20%
T.Log
20%
T.Assert
🤔3😁2
Для преобразования используется утверждение типа (type assertion): value, ok := interfaceValue.(TargetType). Оно проверяет, принадлежит ли значение интерфейса целевому типу.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Anonymous Quiz
21%
Типы данных
41%
Кортежи
15%
Массивы
22%
Интерфейсы
💊22❤3🤔2
Anonymous Quiz
82%
sync.Once
6%
sync.Mutex
3%
sync.WaitGroup
10%
sync.Atomic
👍3
Интерфейсы следует размещать рядом с их использованием, чтобы улучшить читаемость и удобство работы с кодом. Например, интерфейс для работы с базой данных лучше описывать в слое доступа к данным.
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1
Anonymous Quiz
5%
#
93%
//
2%
/*
0%
—
💊9
Anonymous Quiz
19%
Перегрузка функций
6%
Шаблоны
74%
Дженерики
1%
Макросы
Компилятору не нужно сообщать это явно – соответствие интерфейсу проверяется автоматически. Однако для явной декларации можно использовать конструкцию вида var _ InterfaceName = (*StructName)(nil).
Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚Базу Знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3
Anonymous Quiz
4%
Использование ключевого слова private
1%
Использование ключевого слова public
89%
Использование заглавных букв в начале имени
6%
Использование специальных аннотаций
👍2