Юра (Юрий Александрович)
В смысле не зачем, мы добавили 2 и надо отнять чтобы уровнять
А зачем уравнивать?... (задумчиво смотрит в даль)
Emin Zalaev
Допустим у нас есть функция, которая возвращает функцию, и мы хотим функцию передать как переменную
David
На минуточку type abc func(int,int) int это новый синтаксис для меня, и я черт знает, что он умеет. Подозреваю, что ничего, методов иметь не может, и только 1 тип внутри.
Emin Zalaev
можно создать тип этой функцией и присваивать к этой переменной функцию
Vladislav
David
могут быть методы
Приехали...😂
Vladislav
а почему бы собственно и нет?
David
а почему бы собственно и нет?
В книге не было фигурных скобок в конце...
Vladislav
а при чём тут фигурные скобки?
David
а при чём тут фигурные скобки?
А как еще объявлять дополнительные типы, через запятую, type abc func(int,int) int, i int, s string?
Юра (Юрий Александрович)
В книге не было фигурных скобок в конце...
фигурные скобки после func.... () содержали бы тело функции. Но когда мы создаем процедурный тип, мы тело функции не описываем.
Emin Zalaev
Vladislav
Vladislav
фигурные скобки нужны только для определения типа, где литерал типа состоит из секции с множеством элементов
Vladislav
типа интерфейса или структуры
Vladislav
но не все же типы - интерфейс или структура
Emin Zalaev
в чем проблема?
Юра (Юрий Александрович)
(здесь должны быть обидная шутка про то, на каком языке программирования человек писал раньше, но я не помню, на каком, поэтому пока без шутки)
Emin Zalaev
предвижу питон
Emin Zalaev
может быть и пхп...
Vladislav
всё по полочкам
Vladislav
и сразу понятно, что тип задаётся либо другим типом, либо объявлением литерала типа
Vladislav
а литерал типа - или массив или структура и т.д.
Vladislav
всё, весь хуй до копейки
David
в чем проблема?
Если что, этот пример вникуда. Я говорю о том, что бы type abc func(int,int) int содержал внутри не только func(int,int) int
Emin Zalaev
Тип который в себе несколько типов содержит?
Emin Zalaev
Помогите
David
стоп
Emin Zalaev
Или хочешь объявить/инициализировать несколько типов
David
это я не так прочел
Игорь
Приехали...😂
Ты читал то что я тебе по ссылке скинул?
David
Получается для встроенных типов тоже методы можно задавать, или их нужно сперва обернуть в кастомный тип?
Vladislav
но по факту получится новый тип
David
да
Да, нужен кастомный или можно сразу для встренного?)
Andrey
немного подушню, но это не самый лучший пример)
Юра (Юрий Александрович)
Получается для встроенных типов тоже методы можно задавать, или их нужно сперва обернуть в кастомный тип?
непосредственно для встроенных типов создать метод не получится, т.к. метод типа может содержаться только в том же пекейдже, в котором объявлен тип
Vladislav
Да, нужен кастомный или можно сразу для встренного?)
можно определить свой кастомный тип и для него будут методы
Emin Zalaev
немного подушню, но это не самый лучший пример)
Ну я просто не знаю какой ему можно показать чтобы он понял, осознал, прочувствовал
Юра (Юрий Александрович)
Да, нужен кастомный или можно сразу для встренного?)
т.е. к int прицепить новый метод не получится, т.к. ты не можешь редактировать пекейдж, в котором определен тип int а к своему собственному типу, порожденному из int - можно.
Andrey
Ну я просто не знаю какой ему можно показать чтобы он понял, осознал, прочувствовал
ну как пример, я думаю лучше подойдет пример, где какая-то общая функция принимает аргумент в виде тип-функция, и ты подсовываешь разную реализацию ей. и не требуется порождать интерфейс
Андрей
Я недавно в книге прочел что “type name func(int) int” используется для так называемого «замыкания»
Rostislav
А как еще объявлять дополнительные типы, через запятую, type abc func(int,int) int, i int, s string?
Попробую написать по-другому, может получится. В го можно определять свои типы. Синтаксис для этого следующий: type A B где A - имя нового типа B - имя старого типа Самый распространенный пример - структуры: type myType struct{ a int b string } тут A: myType B: struct{ a int b string } Конструкция type A B позволяет добавлять к своему новому типу A методы. В случае структур это должно быть знакомо func (m myType) func() { /// } Но. В качестве B может выступать любой другой тип. Например int64. Так сделать Duration: type Duration int64 Мы также можем сделать у этого нового типа методы: func (d Duration) Nanoseconds() int64 { /// } В качестве B может быть функция. Тут сложнее понимать, но суть та же. Пример в пакете http: type HandlerFunc func(ResponseWriter, *Request) и мы также можем у нашего нового типа сделать метод! Ага, метод у функции: func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) { /// }
Rostislav
Спасибо, но зачем? Я уже понял)
Что конкретно зачем?
David
Что конкретно зачем?
Зачем сообщение
Rostislav
Зачем сообщение
не пойму) Зачем я написал то сообщение выше, или что?
Rostislav
+
объяснить, как работает это в го
David
Вообще это интерсно, если присмотреться, в питоне термин "класс" относительно перегружен (подозреваю, что в других языках тоже). Голанг распутывает эту перегрузку.
Юра (Юрий Александрович)
Конешно! Выкинули свойства, события, наследование, перегрузки, переопределяемые члены - и вот, все распуталось :)
Vladislav
события?
Vladislav
а расскажите про события в питоне
Vladislav
какие там события у класса
Юра (Юрий Александрович)
в питоне - не знаю, я про питон только обидные шутки запоминаю.
Vladislav
Юра (Юрий Александрович)
- Можно ли быстро с питона перейти на другой язык программирования? - Можно, но сначала придется научиться программировать.
Anonymous
Эээ
Vladislav
питон как современный бейсик
Anonymous
Не наезжай
Vladislav
если учить программирование в 2022 - то тайпскрипт
Anonymous
Данил
Anonymous
Vladislav
No. Js only
ну или хотя бы js, ладно
Vladislav
остальное потом приложится
Anonymous
помогло, благодарю
Если честно не знаю как пофиксить именно консоль отладки
Vladislav
ну а реально, чего бы и нет
Vladislav
по скорости местами и гошку уделает
Anonymous
А не про этот ваш джы эс