LINUX.ORG.RU
Ответ на: комментарий от KillTheCat

Там *main.myError.

Почему, если переменной присвоили nil перед возвратом из функции?

А вот если уже в main сделать = nil

Но это бессмысленно.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

Когда интерфейс, то указатель не простой, а жирный. После первого присвоения оно запоминает тип и инстанс. После присвоения nil, оно вытирает инстанс, но оставляет тип. При этом в сравнении не равно nil.

Что забавно, если вызвать виртуальный метод, то он вызовется у правильного типа да и ещё self будет nil

vertexua ★★★★★
()
Ответ на: Что go за зверь такой от KRex

Есть ли что-то, чего нет у python?

Возможность без костылей выжимать все мощности из машины в рамках одного рантайма и единственного бинарника.

WitcherGeralt ★★
()
Ответ на: комментарий от vertexua

После присвоения nil, оно вытирает инстанс

Лучше помыть с мылом.

bread
()
Ответ на: комментарий от KillTheCat

Ну там другой тип. Я может немного не корректно объяснил, извини, немного сам запутался.

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

Вот снаружи уже чистый интерфейс. Его обнуляешь - обнуляет полностью.

Особенно это все счастье подгорает когда у тебя сложный код и nil vs not-nil в поле структуры что-то значит по логике приложения. А потом ты оттуда его впиливаешь в интерфейс и через несколько методов сравниваешь с nil. И тогда начинается пожар на продакшне

vertexua ★★★★★
()
Ответ на: комментарий от pawnhearts

Костыль и нинужно. Годится только чтобы IDE подсказывать и доку генерять. Разве что это коварный план, чтобы в Python 4 опять всё сломать ввести статическую типизацию.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Очень часто показывает мне потенциальные ошибки.

К тому же это позволяет конпелять модули и «выжимать максимальную производительность» - ты же это любишь?

pawnhearts ★★★★★
()

Го конечно. Тут вариантов нет.

dem ★★
()
Ответ на: Что go за зверь такой от KRex

Да конечно. Это поделка Гугла и ты получишь богатый опыт. А еще у тебя будет на сервере 1 бинарный файл вместо кучи кода...

dem ★★
()
Ответ на: комментарий от WitcherGeralt

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

bread
()
Ответ на: комментарий от bread

Их и так уже больше двух. Третий питон сам с собой несовместим.

WitcherGeralt ★★
()

для форума

Python.

интернет магазина

Go.

Deleted
()
Ответ на: комментарий от dem

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

bread
()
Ответ на: комментарий от dem

Итак, преимущества го по итогам треда: корпорация добра, бинари на сервере, if err != nil, мощная система типов с interface{}, утилизация всех ресурсов машины одним микросервисом. Ниче не упустил?

bread
()
Ответ на: комментарий от bread

Нет еще очень активная разработка и ты будешь рад переписывать его регулярно.

dem ★★
()
Ответ на: комментарий от WitcherGeralt

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

anonymous
()
Ответ на: комментарий от WitcherGeralt

Будет 2 ненавистника. Но я не ненавистник. Я хочу на серваке иметь сырцы (ВСЕГДА). Я хочу иметь .so

dem ★★
()
Ответ на: комментарий от dem

В Go есть загружаемые модули. Я, правда, не знаю как их запиливать. А код небольших проектов ты при большом желании можешь так же фигачить на сервак и запускать с go run.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

А код небольших проектов ты при большом желании можешь так же фигачить на сервак и запускать с go run.

Почему небольших? Можно ли сделать так чтоб у меня было 3 проекта но они использовали общую библиотеку? Можно ли сделать чтоб бинарь нельзя было запустить напрямую, но он генерился с помощью go run проверялась подпись и тогда запускался?

dem ★★
()

Выбирай Python. Студентов учат использовать его.

anonymous
()

Без разницы. В зависимости во что ты хочешь писать в итоге, что более приятно.

deterok ★★★★★
()

RoR / Django без вариантов, но и её ты не потянешь.

menangen ★★★★★
()

Какая разница, какой выбирать ЯП, если все популярные движки написаны на PHP?

fman2
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.