Чтобы стать богатым-знаменитым, нужно построить свою Церковь. Слова приписывают Рону Хаббарду, но вроде бы он этого не говорил. Униформа есть. Кадеты Глубины - служители. Правильной дорогой идёте, товарищи!
Картинка про архитектуру, где сердце - Hasura. Голосую всеми четырьмя лапами! С 2018-ого года бегаю с Хасурой, и пытаюсь везде её применить. R&D с открытым кодом: маркет-плейс на Flutter (на паузе, 850 серий лайв-кода), клон Трелло на React (продолжаю 276 дней). Вам надо бы ещё воткнуть Temporal.io (через Hasura Events - Microservice API) + Kafka (через Hasura Events - Event queue).
А прошлый инвестор... ирония заключается в том, что мы его просто уволили с проекта. Он сохранит за собой свою долю (Ваня болезненно честен, щепетилен в этом вопросе, и ценит участие даже при потерянном доверии), но думаю, вскоре эту долю просто выкупят. У человека был шанс, но теперь его ждёт только забвение. Даже имя его я не стал упоминать, если вы обратили внимание.
На этом месте возникает вопрос, какая судьба ожидает текущего инвестора? В долине крайне важен трекшн. Пятнышки на халатике.
Голосую всеми четырьмя лапами! Go - это матерный язык в мире языков программирования, где простыми выразительными средствами можно сказать больше, чем на своём родном языке.
Что помешало научиться готовить temporal.io (единорог, на минуточку)? Пилить инфраструктурный велосипед - это значит откладывать на потом "business value".
В GoLang отсутствуют ссылочные типы данных, но вместо них используются указательные типы данных. Указатели в GoLang позволяют работать с данными по их адресу в памяти. Указательные типы данных в GoLang позволяют эффективно работать с данными и передавать их по ссылке, что может быть полезно во многих ситуациях.
В GоLang нет ссылок, только указатели (ссылки есть в c/c++). У переменой есть значение, адрес ссылки это адрес значения, а указатель на значение имеет свой собственный адрес (это очень грубое объяснение).
Всем известна простая истина - в Go абсолютно все передается по значению.
А вот что рассказывает робот по теме "Ссылочные типы данных":
Ссылочные типы данных в GoLang - это типы данных, которые хранятся в системной куче (heap) и передаются по ссылке, а не по значению. Это означает, что при передаче ссылочного типа данных в функцию, функция работает с оригинальным объектом, а не с его копией. Некоторые из ссылочных типов данных в GoLang:
Срезы (slices) - это динамические массивы, которые представляют собой ссылку на последовательность элементов определенного типа.
Карты (maps) - это ассоциативные массивы, которые представляют собой ссылку на набор пар ключ-значение.
Каналы (channels) - это механизм для обмена данными между горутинами (goroutines) в многопоточной программе.
Указатели (pointers) - это переменные, которые хранят адрес в памяти другой переменной.
?? Структуры (structs) - это пользовательские типы данных, которые могут содержать поля разных типов.
Интерфейсы (interfaces) - это типы данных, которые определяют набор методов, которые должны быть реализованы для типа данных, чтобы он удовлетворял интерфейсу.
Функции (functions) - это типы данных, которые могут быть переданы в качестве аргументов другим функциям или возвращены из функций.
Все эти типы данных являются ссылочными в GoLang и передаются по ссылке, а не по значению.
Нельзя сравнивать []int{1,2,3} == []int{1,2,3}, в отличии от [3]int{1,2,3} == [3]int{1,2,3}
Поправка:
В GoLang тип данных struct является составным типом данных, который объединяет несколько полей разных типов данных в один объект. struct не является ссылочным типом данных, а является значимым типом данных, то есть при передаче struct в функцию или присваивании его переменной происходит копирование значений его полей. Однако, при передаче struct в функцию в качестве аргумента, происходит передача его копии, что может быть неэффективно для больших struct. В таких случаях можно использовать указатели на struct.
Чтобы стать богатым-знаменитым, нужно построить свою Церковь. Слова приписывают Рону Хаббарду, но вроде бы он этого не говорил. Униформа есть. Кадеты Глубины - служители. Правильной дорогой идёте, товарищи!
Картинка про архитектуру, где сердце - Hasura. Голосую всеми четырьмя лапами! С 2018-ого года бегаю с Хасурой, и пытаюсь везде её применить. R&D с открытым кодом: маркет-плейс на Flutter (на паузе, 850 серий лайв-кода), клон Трелло на React (продолжаю 276 дней). Вам надо бы ещё воткнуть Temporal.io (через Hasura Events - Microservice API) + Kafka (через Hasura Events - Event queue).
На этом месте возникает вопрос, какая судьба ожидает текущего инвестора? В долине крайне важен трекшн. Пятнышки на халатике.
Почему хак? Красота! Язык фактически принуждает тебя к этому решению.
panicнельзя игнорировать без того, что бы программа не упала.В чём разница
errors.Is()иerrors.As()Внедрили свой OverflowAI
Голосую всеми четырьмя лапами! Go - это матерный язык в мире языков программирования, где простыми выразительными средствами можно сказать больше, чем на своём родном языке.
А почему -race не детектит гонку данных для примера кода выше?
Что помешало научиться готовить temporal.io (единорог, на минуточку)? Пилить инфраструктурный велосипед - это значит откладывать на потом "business value".
Ещё один пример в мою коллекцию:
https://habr.com/ru/companies/oleg-bunin/articles/418235/
https://habr.com/ru/companies/ozontech/articles/590709/
В GoLang отсутствуют ссылочные типы данных, но вместо них используются указательные типы данных. Указатели в GoLang позволяют работать с данными по их адресу в памяти. Указательные типы данных в GoLang позволяют эффективно работать с данными и передавать их по ссылке, что может быть полезно во многих ситуациях.
В GоLang нет ссылок, только указатели (ссылки есть в c/c++). У переменой есть значение, адрес ссылки это адрес значения, а указатель на значение имеет свой собственный адрес (это очень грубое объяснение).
Кошмар для UGC сайтов. Но фарш невозможно провернуть назад. Надо учиться теперь с этим жить.
Это отправная точка. Если относиться к LLM с фигой в кармане, то можно получать некоторую выгоду.
"Огласите весь список, пожалуйста!"
slices, maps, channels, pointers, interfaces, functions, strings.
Почему для “type parameters” квадратные скобки, когда угловые для генериков в Java, C#, C++, TypeScript и Dart?
Вероятно, по аналогии с объявлением типа для ключей мапы:
map[int]boolИ чтобы дистанцироваться от генериков в других языках, т.к. нет возможности создавать классы или интерфейсы с “type parameters”. Вместо этого можно использовать обобщенные функции и методы.
Как избежать применения ORM для Go, используя чистый SQL - полезная заметка?
А вот что рассказывает робот по теме "Ссылочные типы данных":
Ссылочные типы данных в GoLang - это типы данных, которые хранятся в системной куче (heap) и передаются по ссылке, а не по значению. Это означает, что при передаче ссылочного типа данных в функцию, функция работает с оригинальным объектом, а не с его копией. Некоторые из ссылочных типов данных в GoLang:
Срезы (slices) - это динамические массивы, которые представляют собой ссылку на последовательность элементов определенного типа.
Карты (maps) - это ассоциативные массивы, которые представляют собой ссылку на набор пар ключ-значение.
Каналы (channels) - это механизм для обмена данными между горутинами (goroutines) в многопоточной программе.
Указатели (pointers) - это переменные, которые хранят адрес в памяти другой переменной.
?? Структуры (structs) - это пользовательские типы данных, которые могут содержать поля разных типов.
Интерфейсы (interfaces) - это типы данных, которые определяют набор методов, которые должны быть реализованы для типа данных, чтобы он удовлетворял интерфейсу.
Функции (functions) - это типы данных, которые могут быть переданы в качестве аргументов другим функциям или возвращены из функций.
Все эти типы данных являются ссылочными в GoLang и передаются по ссылке, а не по значению.
Нельзя сравнивать []int{1,2,3} == []int{1,2,3}, в отличии от [3]int{1,2,3} == [3]int{1,2,3}
Поправка:
В GoLang тип данных
structявляется составным типом данных, который объединяет несколько полей разных типов данных в один объект.structне является ссылочным типом данных, а является значимым типом данных, то есть при передачеstructв функцию или присваивании его переменной происходит копирование значений его полей. Однако, при передачеstructв функцию в качестве аргумента, происходит передача его копии, что может быть неэффективно для большихstruct. В таких случаях можно использовать указатели наstruct.Да почему "лажа"? Это отправная точка. Если относится к LLM с фигой в кармане, то можно получать некоторую выгоду.
Спасибо! Нашёл Communicating sequential processes(CSP) for Go developer in a nutshell.
Добавил про Channel Axioms к 9-му вопросу.