
Nikita
03.07.2018
19:16:35
угу

Roman
03.07.2018
19:19:27
правда мутабельность опять всё портит..
можно изменить состояние конфига во время исполнения теоретически

Никита
03.07.2018
19:21:28
И что? Вы же этого делать не собираетесь

Google

Vadim
03.07.2018
19:31:12

Roman
03.07.2018
22:38:50
есть вообще планы завести имутабельность в Go?

Никита
03.07.2018
22:39:47
Зачем?

Roman
03.07.2018
22:44:06

Никита
03.07.2018
22:44:19
Ну а зачем она нужна ?
В контексте Го

Roman
03.07.2018
22:44:29
Зачем?
ну как зачем... чтоб избежать лишние копии не потеряв compile-time безопасность
Ну а зачем она нужна ?
представь себе, что ты пишешь библиотеку для гитхаба и твоя библиотека ведёт учёт чего-либо... например регистр пользователей... и у тебя есть метод передачи списка зарегистрированных пользователей lib.GetUsers() []lib.User
так вот проблема в том, что ты либо отдаёшь копию (deep copy) слайса пользователю библиотеки, либо отдаёшь сам слайс, но UPPERCASE'ОМ в документации пишешь что НЕЛЬЗЯ МУТИРОВАТЬ ПОЛУЧЕННЫЙ СЛАЙС!!!

Никита
03.07.2018
22:48:57
Ну а зачем его мутировать человеку то?)

Roman
03.07.2018
22:49:20
а это херово... приходится жертвовать производительностью для получения безопасности..
в C++ же мы можем передать пользователю указатель на константу и компилятор будет бить по рукам, если пользователь библиотеки где либо попытается мутировать этот объект

Google

Roman
03.07.2018
22:50:16

Никита
03.07.2018
22:50:43
Нет ну просто странная ситуация получается
Никто менять значение не собирается
Но при этом надо ещё чтобы и компилятор гарантировал это
Тут больше ответственность лежит на разработчике
Зачем менять то, что ты менять не собираешься

Roman
03.07.2018
22:52:27
Нет ну просто странная ситуация получается
странная ситуация получается, когда мы получаем undefined behavior, когда кто-то где-то что-то мутировал...
пользователь библиотеки мог бы сказать мол "я не мутирую этот слайс, я лишь передаю его в третью функцию"... а там... где-то в глубине callstack'а какой-то тридевятиземельный программист мутирует какой-то слайс, который в конце оказывается ссылкой на тот массив из той библиотеки и всё взлетает на ветер и никто не понимает почему..

Roman
03.07.2018
22:52:38

Roman
03.07.2018
22:53:12

Roman
03.07.2018
22:53:47

Roman
03.07.2018
22:54:41
Никто менять значение не собирается
да бляха-муха... как часто вы в коллективном программировании (к этому относится и использование стороннего кода) в натыкались на то, что люди не (-внимательно) читают документацию?
вероятность ошибиться и мутировать немутабельное - велико

Никита
03.07.2018
22:55:20
Я понимаю, да, что проще было бы иметь возможность создавать иммутабельные структуры данных

Roman
03.07.2018
22:55:37

Roman
03.07.2018
22:55:51
а если кому compile time безопасность ни о чём не говорит то этому кому тут явно не место в чате про статически типизированный ЯП)) (извиняюсь за грубость)
про то, что в Go абсолютно всё мутабельное.. и приходится либо копировать, либо жутко рисковать, вот и задаюсь вопросом, есть ли надежда что завезут наконец?

Daniel
03.07.2018
23:04:56
Не известно

Roman
03.07.2018
23:06:16
хай секунду дольше компилился бы но с const qualifier'ами

Google

Daniel
03.07.2018
23:07:16
Ну - пока без них

Alexander
04.07.2018
03:31:30

Harry
04.07.2018
06:30:28
пасаны, каждый раз при запуске go файла просит разрешение сети. как енто убрать?

Kirill
04.07.2018
06:32:51
перейти на линукс/мак)00
вероятно в винде можно настроить чтоб всегда разрешение было

Harry
04.07.2018
06:33:55
зочем линукс. я ж не хацкер

Linux
04.07.2018
06:41:25

Harry
04.07.2018
06:43:01

Linux
04.07.2018
06:45:01
Есть спецы монго?
Ни то я тут уже на кофейной гуще гадаю как выполнить этот запрос в mgo
db.getCollection('sstweb').findOne(
{ car_id:1},
{ car_id:0, modules: { $elemMatch: { module: 1 } } }
).modules[0].module

Александр
04.07.2018
06:56:00
а в чем проблема?

Kirill
04.07.2018
06:56:02
можно тестировать запросы через какой-нибудь монго клиент

Александр
04.07.2018
06:56:06
там тоже findOne есть

Vadim
04.07.2018
06:59:54

Dmitri
04.07.2018
07:00:15

Harry
04.07.2018
07:02:05

Dmitri
04.07.2018
07:03:08
ну, как бэ, совет отключить контроль учетных записей к чОртовой матери заради "не спрашивать разрешения на сеть для одной приложухи"...
какбэ, UAC - это т.н. "проактивная защита"

Linux
04.07.2018
07:04:57
а в чем проблема?
не знаю как добавить это:
{ car_id:0, modules: { $elemMatch: { module: 1 } } }
и это
.modules[0].module

Dmitri
04.07.2018
07:06:13
на фоне предположения, что отключение UAC - достойный способ разрешения проблемы запроса приложением доступа к сети, предложение перейти на линукс для решения проблемы - примерно из той же оперы.

Google

Linux
04.07.2018
07:07:10

Dmitri
04.07.2018
07:08:01
ага, заодно софт с файлопомоек без вопросов будет устанавливаться, и вообще...

Linux
04.07.2018
07:08:34

Dmitri
04.07.2018
07:09:06
ну вообще, есть вариант "сдать компьютер в магазин и попросить вернуть деньги"
тоже норм решение проблемы

Александр
04.07.2018
07:09:30
Model это просто структура как json (у тебя же там json лежит?)
сгенерить можно тут - http://json2struct.mervine.net/

Linux
04.07.2018
07:10:26

Алексей
04.07.2018
07:11:47

Linux
04.07.2018
07:15:08

Алексей
04.07.2018
07:17:13

Linux
04.07.2018
07:18:06
{
"_id" : ObjectId("5b3c52b51d9c9c8584ab45a4"),
"car_id" : 1,
"modules" : [
{
"module" : 1,
"session" : [
"hash1"
]
}
]
}

Алексей
04.07.2018
07:18:57
err := c.collection().Find(bson.M{"car_id": 1, "modules.module" : 1}).One(&result)

Linux
04.07.2018
07:19:49
я не понимаю чего то разве это не шаблон а где он мне найдет машину с идентификатором 1
или где используется шаблон для поиска
он же вернет структуру
?
а не значение поля?

Алексей
04.07.2018
07:21:52
А тебе только значение поля нужно в результате?

Google

Алексей
04.07.2018
07:23:43
Если да, то aggregate используй а не find, в нем можно пост обработку результата сделать

Linux
04.07.2018
08:01:14

Алексей
04.07.2018
08:03:14
Тебе сначала необходимо куда нибудь получить результат. А потом уже его разобрать
В One он помещается у тебя

Linux
04.07.2018
08:04:42

DMITRY
04.07.2018
08:05:37
это же вроде логично

Алексей
04.07.2018
08:07:37

Linux
04.07.2018
08:09:42
это же вроде логично
Да ну, когда я работаю с пострес я указываю
select value from my_table limit 1
и в го я получаю в конкретную переменную а не структуру
mongo само позволяет вернуть мне цифру, тоесть я ожидаю что mgo имеет инструмент вернуть мне нужную цифру а не возвращать структуру с кучами полей

Алексей
04.07.2018
08:11:17

Linux
04.07.2018
08:14:33

Алексей
04.07.2018
08:16:16
Mgo сам по себе в нутри Шлаковый)) хотел свою версию запилить с блекджеком и шлюхами)) но пока просто руки не доходят

Vasily Romanov
04.07.2018
08:31:29