
Roman
13.09.2018
15:51:08

Алексей
13.09.2018
15:51:23
ну тогда лучше mut в Go2
чтоб иммутабельность было проще писать, чем мутабельность
ну ещё у Pawel от этого неслабо бомбанёт, тоже плюс

Google

Savely
13.09.2018
15:51:58
ну тогда лучше mut в Go2
Не лучше, а это единственное решение. У людей могут быть переменные с название mut, это поломает совместимость. Роман же не просто так const выбрал.

Roman
13.09.2018
15:52:08

Алексей
13.09.2018
15:52:47

Roman
13.09.2018
15:53:37

Savely
13.09.2018
15:53:40

Алексей
13.09.2018
15:54:07

Savely
13.09.2018
15:54:19
Дефолтная иммутабельность поломает даже примитивный пример уровня хелло ворлд

Roman
13.09.2018
15:55:35

Savely
13.09.2018
15:56:00
конечно
А как я могу мутировать существующий ключ?

Daniel
13.09.2018
15:56:03
а?!

Google

Roman
13.09.2018
15:56:24

Алексей
13.09.2018
15:56:50
тогда сам указатель будет ключом или структура?

Savely
13.09.2018
15:56:54

Roman
13.09.2018
15:57:09

Алексей
13.09.2018
15:57:26
но сам указатель не получится мутировать
то есть ключ фактически иммутабельный (ну в самой мэпе)

Roman
13.09.2018
15:57:56

Алексей
13.09.2018
15:58:10
но мапа же по указателю будет сравнивать?

Daniel
13.09.2018
15:58:11

Roman
13.09.2018
15:58:22

Daniel
13.09.2018
15:58:49
ключ иммутабельный, потому, что он копия оригинала

Roman
13.09.2018
15:58:57
ключ иммутабельный, потому, что он копия оригинала
копия указателя это pointer aliasing и по прежнему mutable shared state...
я писал о похожем gotcha вот здесь: https://github.com/romshark/Go-2-Proposal---Immutability#46-why-do-we-need-immutable-receivers-if-we-already-have-copy-receivers

Daniel
13.09.2018
16:01:04
тем не менее, ключ у мапы иммутабельный

Roman
13.09.2018
16:01:35

Илья
13.09.2018
16:01:59
https://play.golang.org/p/3E4MZhZFzyy
давайте с примерами
что, где, какие ключи, где у вас там что

Lesha
13.09.2018
16:03:02

Aleksandr
13.09.2018
16:03:52

Google

Lesha
13.09.2018
16:04:23

Илья
13.09.2018
16:04:37
ну так для этого и кладут указатель, сожаления я не понимаю

Roman
13.09.2018
16:09:05

Lesha
13.09.2018
16:12:49

Roman
13.09.2018
16:16:04
как я понял, вы преподносите это как проблему, но это же не проблема
это может быть проблемой, но не обязательно, зависит от кейса.
если ты хочешь защититься от мутабельности ключа наверняка, то данный концепт даёт тебе такую возможность. Кому нужна иммутабельность которая работает везде заисключением ключей map'ы?
immutability это про типы. Типы могут быть иммутабельными, будь то переменная, поле структуры, возвратный значение функции, ресивер или ключ мапы

Nick
13.09.2018
16:18:37
Да и значения тоже
Хорошо бы
Ну или я не так понял мысль

Daniel
13.09.2018
16:19:14
а и значения мапы иммутабельны

Roman
13.09.2018
16:19:17

Daniel
13.09.2018
16:19:30
нет способв его модифицировать, иначе как вынуть и положить

Roman
13.09.2018
16:20:00
нет, не могут.
ну не будешь же ты отрицать компилирующийся работающий код сверху)

Daniel
13.09.2018
16:21:38
ключ мапы - *Person
то, на что он указывает - вообще не участвует никак в работе с мапой
ключ - иммутабельный

Google

Savely
13.09.2018
16:22:15

Nick
13.09.2018
16:22:20

many-faced
13.09.2018
16:24:21
ребята, подскажите, как сделать так, чтобы я мог результат sql запроса сосканить в собственную структуру?

Roman
13.09.2018
16:24:54
ключ - иммутабельный
давайте выясним что мы имеем ввиду под ключём?
ясное дело что значение ключа в данном случае это указатель, 8 байт. Однако указатель это reference type. Reference type предоставляет интерфейс к иному значению. Следственно ключ мапы в моём понимани это как сам указатель так и то, на что он указывает.
Есть случаи, когда тебе пофиг меняется ли то на что указывает указатель или нет. Но иногда, тебе нужно это предотвратить. И то и то возможно в нынешнем proposal'е

Илья
13.09.2018
16:26:18
если ты кладешь указатель в мап, то ты получаешь ровно то, что хочешь, мап с указателями

Daniel
13.09.2018
16:26:32
> Следственно ключ мапы в моём понимани это как сам указатель так и то, на что он указывает.
а ключ мапы - это то, из чего посчитан хеш, и что используется в операторе == при работе с ячейками, для которых произошла коллизия хеша
не надо изобретать собственную терминологию...

Admin
ERROR: S client not available

Roman
13.09.2018
16:28:05
Эт не проблема
если из условной билиотеки packagex тебе возвращают иммутабельную reference на объект: * const packagex.Person и ты хочешь использовать его в качестве ключа, тогда map[*packagex.Person]bool не сойдёт, потому-что компилятор будет ругаться что типы не совместимы и правильно сделает.
автор packagex не зря запретил тебе мутировать packagex.Person, на то есть причины, и убирать эту защиту в for range мапы это нонсенс, это ломает всю концепцию иммутабельности.

Stanislav
13.09.2018
16:28:31

Savely
13.09.2018
16:29:02

many-faced
13.09.2018
16:29:59

Stanislav
13.09.2018
16:30:09

many-faced
13.09.2018
16:30:17
я думал может какой-то интерфейс структуре применить и всё

Roman
13.09.2018
16:30:36

Илья
13.09.2018
16:31:03

many-faced
13.09.2018
16:31:56

Roman
13.09.2018
16:33:15

many-faced
13.09.2018
16:50:25
https://github.com/cridenour/go-postgis

Roman
13.09.2018
16:56:07
да, думаю стоит переименовать proposal в "Immutable Types"

Google

Илья
13.09.2018
17:01:27
у point реализован метод Scan - https://github.com/cridenour/go-postgis/blob/master/point.go#L47, поэтому оно умеет перевариваться в Scan

many-faced
13.09.2018
17:02:31

Илья
13.09.2018
17:04:25
https://golang.org/src/database/sql/convert.go#L209

many-faced
13.09.2018
17:09:07
https://golang.org/src/database/sql/convert.go#L209
ну тут я вижу что эта функция перебирает столбцы и записывает значения в соответствующие поступившие в Scan переменные. Но я не понимаю, как это запускает метод Scan того типа, который поступил в rows.Scan

Илья
13.09.2018
17:11:12
вы передаете указатель на объект в функцию scan объекта rows, которая внутри вызывает функцию convertAssign, которая проверяет, реализует ли переданное значение интерфейс dest.(Scanner) b
и если да, то вызывает его, чего вы не понимаете?

many-faced
13.09.2018
17:13:41

Savely
13.09.2018
17:13:46
extends, например

many-faced
13.09.2018
17:14:10

Savely
13.09.2018
17:14:18
Окей)

Vadim
13.09.2018
17:22:49
У нас есть стикеры группы?
Почему болгарские?

Heathcliff
13.09.2018
17:29:30
стикера сабжа есть