The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск языка программирования Go 1.19"
Отправлено Филимон Прошареный, 04-Авг-22 14:31 
Прошу меня сердечно простить и понять, я думал это очевидные примеры, но вы их даже не поняли :-(

Поясняю: фраза нет нормальных констант означает, что вы не можете инициализировать константу, например, результатом выполнения функции. Константу в Go можно инициализировать только другой константой. Это а) практически бесполезно б) при отладке заставляет держать в голове возможность того, что то, что вы хотели, чтобы было константой, поменяется. Это увеличивает трудозатраты (и выглядит убого для 21 века)

>> Скажи где за дженерики не платят производительностью.

в C++, например

>> c.Insert("number", 42) // покеда!

Этот восхитительный пример вы не поняли от слова "вовсе". Там будет паника. Я не буду объяснять почему, просто оставлю вам полный пример. Который вы сможете разобрать на досуге и повысить свой уровень владения языком. Который, к слову, я нахожу весьма скромным.

//-------

package main

type Container struct {
    Items map[string]int32
}

func (c *Container) Insert(key string, value int32) {
    c.Items[key] = value
}

func main() {
    var c Container
    c.Insert("number", 42)
}
//-------


> for _, value := range(values) {
>        x := 42 // Ой! здесь это не дешёвая операция на стеке. Здесь это генератор мусора
>> Синтаксическая ошибка. Чел явно не знает Go (или очень мало опыта) и пытается его критиковать.

Нет здесь никакой ошибки. Вот полный пример.

    values := []int{1, 2, 3, 4}
    for _, value := range(values) {
        x := value * 2
        fmt.Println(x)
    }

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

> Что вернул Get ? bool, код, текст ответа, структуру... ? RTFM!
>> Высосано из пальца. Очевидно что структуру содержащую в себе все данные относящиеся к response.
>> По вызову http.Get это очевидно.

Нет, это не очевидно. Вы пишите ReadOnly код, который существенно увеличивает когнитивную нагрузку на программиста. Возможно я привёл не совсем удачный пример с http.Get потому, как пакет популярный. Если у вас действительно есть желание понять меня, то представьте, что у вас есть 2 функции: 1 возвращает [censored], в вторая возвращает [censored] и вам понадобилось ДОРАБОТАТЬ код, чтобы сложить их результаты

v1, err := f1()
v2, err := f2()

sumOfV := v1 + v2 // В GO без каста не работает, а на что кастовать из кода не видно

В GO придётся или в исходники лезть, или в документацию, или в многочисленных ошибках компиляции намёки искать
Безтиповое создание переменных это зло само по себе, а в GO оно усугубляется возведённой в абсурд необходимостью кастовать всё и вся.


> // c *Container - это тутошний this|self - нахрена ?

Затем что это структуры, а не классы. RTFM.

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

>> Поэтому либо приводи к нужному типу, либо делай проверки и прочие округления.

Любезнейший, в C++ есть static_cast, dynamic_cast, reinterpret_cast, const_cast, с style cast ... поэтому есть и смысл указывать компилятору как именно преобразовывать типы. Сколько типов кастов есть в GO ?

>> Поэтому либо приводи к нужному типу, либо делай проверки и прочие округления.

Проверки и тут при чём ? Можно сложить две однотипных переменных и получить переполнение

>> Нет. float64 априори может быть больше float32 (никогда с бухгалтерами не искали копейки?

Если вы float'ами считаете деньги, Я ПРОШУ ВАС СЕЙ ЖЕ ЧАС ПОКИНУТЬ ПРОФЕССИЮ!

>> Ты основы програмирования вообще знаешь? Из чего состоят строки?

Наверное, если бы я, как и вы не знал бы основ программирования, мне бы было не так грустно при работа с Go :-(


 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру