«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему я не могу использовать интерфейсы с ограничениями типов непосредственно в Go?

Почему я не могу использовать интерфейсы с ограничениями типов непосредственно в Go?

Опубликовано 19 ноября 2024 г.
Просматривать:321

Why Can't I Use Interfaces with Type Constraints Directly in Go?

Ограничения типа интерфейса

При разработке приложения Go важно понимать ограничения, налагаемые ограничениями типа интерфейса. Типы интерфейсов с элементами типа, такими как объединения, ограничены в использовании. В этой статье рассматриваются особенности ограничений типов интерфейса и приводятся примеры, иллюстрирующие их влияние.

Определение интерфейсов с ограничениями типов

В Go рассматриваются интерфейсы, содержащие элементы типа, такие как объединения. неосновной. Это означает, что они не могут использоваться в качестве типа переменных или быть компонентами других неинтерфейсных типов. Например, следующий интерфейс Number не является базовым, поскольку содержит объединение:

type Number interface {
    int | int64 | float64
}

Ошибка: «интерфейс содержит ограничения типа»

При попытке инициализировать фрагмент интерфейса Number следующим образом:

a := []Number{Number(1), Number(2), Number(3), Number(4)}

Go выдает ошибку «интерфейс содержит ограничения типа», поскольку интерфейс Number не может быть используется при преобразовании типов (как показано в Number(1)).

Понимание ограничений типа

Согласно спецификации языка Go, интерфейсы, которые не являются базовыми, могут использоваться только в качестве ограничений типа или как элементы других интерфейсов, используемые в качестве ограничений. Они не могут быть типами значений или переменных. Это связано с тем, что наличие элементов типа в интерфейсе делает его небазовым и несовместимым с прямым созданием экземпляра.

Пример: использование небазовых интерфейсов

Хотя небазовые интерфейсы использовать нельзя непосредственно как типы, их можно использовать как ограничения типа. Например, рассмотрим следующую структуру Координаты, которая использует параметр универсального типа T, ограниченный интерфейсом Number:

type Coordinates[T Number] struct {
    x, y T
}

В этом сценарии структура координат может быть создана только с типами, которые соответствуют ограничениям интерфейса Number.

Заключение

Типы интерфейса с ограничениями типа играют решающую роль в обеспечение безопасности типов в приложениях Go. Понимая ограничения небазовых интерфейсов и правильно используя их в рамках ограничений типа, разработчики могут создавать надежный и эффективный код.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3