Pull to refresh
0
0
Send message
Извиняюсь, var descirptor = getObject<MyDeployment/>().
Как в любом языке с genericaми?
Десериализация посредством generic методов + рефлексии позволяет на выходе получить результирующий тип, а не его динамическое представление.

Типа var descriptor = getObject().
1. Этот «неидиоматичный» подход решается введением generic'ов. Generic'и вводят во 2й версии Go.
2. Абсолютно нормальный код, который предполагает написание методов исключительно для реализации интерфейса(исходя из комментариев), что в корне противоречит вашему утверждению про интерфейс исходя из существующей реализации.
Java здесь вообще не при чем, это просто generic.
Сделать ресивером не выйдет т.к. эта функция должна, по сути, возвращать объекты различного типа.
Плюс ко всему, это код из библиотеки kubernetes, а не какой-то притянутый за уши пример, где java разработчики пытаются писать на GO.

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

По типу
var descriptor = getDescriptor<Descriptor1/>(param1, param2)

в любом современном строго типизированном языке
или

var descriptor Descriptor1
ok := getDescriptor(param1, param2, &descriptor)


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

Те же интерфейсы, которые казалось бы унифицированы и крайне просты…
Смотря в исходники(написанный людьми из гугла) я вижу:
    // Implements Something interface
    func (o object) doSomething (i Interface{}) {}

    // Implements AnotherThing interface
    func (o object) doAnotherThing (i Interface{}) {}


Да, самоучитель по GO я действительно(уже довольно давно) прошел часа за 3. Но читать его мне до сих пор местами крайне сложно, если имеется какая-то более-менее сложная логика требующая определенного кол-ва абстракций.

Information

Rating
Does not participate
Registered
Activity