tgoop.com/go_interview_lib/373
Last Update:
💬 Почему лучше использовать неэкспортируемую пустую структуру в качестве ключа контекста в Go вместо строки или другого примитивного типа?
Использование неэкспортируемой пустой структуры в качестве ключа контекста в Go предпочтительнее по нескольким причинам:
1. Уникальность: пустая структура обеспечивает уникальность в пределах области видимости пакета, что помогает избежать конфликтов, которые могут возникнуть при использовании строк или других примитивных типов в качестве ключей.
2. Легковесность: пустая структура не выделяет памяти, так как она не содержит полей, что делает ее очень легким и эффективным вариантом для использования в качестве ключа.
3. Избежание конфликтов: использование пустых структур помогает избежать конфликтов с другими пакетами, которые могут случайно использовать те же самые строки или примитивные типы в качестве ключей контекста.
Пример кода с использованием пустой структуры:
type contextKey struct{}
func main() {
ctx := context.WithValue(
context.Background(),
contextKey{}, "данные, связанные с запросом",
)
handleRequest(ctx)
}
func handleRequest(ctx context.Context) {
fmt.Println("data:", ctx.Value(contextKey{}))
}
Этот пример демонстрирует, как использование пустой структуры в качестве ключа контекста помогает обеспечить уникальность и избежать потенциальных конфликтов.
BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/373