
Oleh
20.01.2018
11:24:12
в 150 воркеров делал

Andrew
20.01.2018
11:24:38
Тогда эта норма™

Oleh
20.01.2018
11:24:56

Google

Andrew
20.01.2018
11:25:11
2 Гб для 150 воркеров

Oleh
20.01.2018
11:25:36
накопливалось

Илья
20.01.2018
11:29:13

Hamidumi
20.01.2018
11:29:38

Oleh
20.01.2018
11:31:43

Slach
20.01.2018
11:39:37
указатель на структуру
о! спасибо дорогой человек
а тыкните носом где это написано?
ну то есть, почему указатель на структуру имплементирует интерфейс, а сама структура нет?

Mykyta
20.01.2018
11:40:07

Илья
20.01.2018
11:40:43
если метод с * - то он только для указателя

Hamidumi
20.01.2018
11:40:55
func (c *Conn) SetLogger(l Logger) {
c.logger = l
}

Ilya
20.01.2018
11:43:54

Google

Slach
20.01.2018
11:45:21
func (c *Conn) SetLogger(l Logger) {
c.logger = l
}
погодите
l Logger
это интерфейс
c - это указатель
c.logger
это что? с.logger это ж поскольку структура просто отрезолвленый указатель
т.е. все равно что мы бы записали *c.logger ?
нет?
я всегда думал что в golang это сделали чтобы лишних звездочек не писать и это синтаксический сахар

Ilya
20.01.2018
11:48:08
https://stackoverflow.com/a/13533822/6119618

Mykyta
20.01.2018
11:49:53

Ilya
20.01.2018
11:50:39

Mykyta
20.01.2018
11:52:04

Ilya
20.01.2018
11:52:48

Alex
20.01.2018
11:54:22

Slach
20.01.2018
11:57:33
https://stackoverflow.com/a/13533822/6119618
ну так я о чем???
func (c *Conn) SetLogger(l Logger) {
// c.logger это (*c).logger элемент структуры Conn
// l это имплементация интерфейса
c.logger = l
}
я не понимаю, почему если аргумент функции это интерфейс, но при этом функция это метод для структуры которая вроде как "указатель"
то реализацию интерфейса надо передавать через указатель?
вот об этом где написано?

Michael
20.01.2018
12:01:56
what was that?

Илья
20.01.2018
12:50:54
https://tour.golang.org/methods/6


Slach
20.01.2018
13:06:20
ты не понял, проблема в твоей реализации logger
я действительно не понимаю ;)
пожалуйста поясни, это очень важно для меня, потому что такие вещи в языке, которым пользуешься надо знать
ту ссылку которую ты привел я читал
там тоже самое
там говорится про то что если v *Type
v.Func()
интерпретируется как (*v).Func()
pointer
но я то про интерфейс а не про указатель на тип
я еще раз спрашиваю, объясните мне если у меня есть функция
func(c *MyStruct) SetInterfacer(i MyInterface) {
c.interfacer = i
}
почему если у меня есть какая то имплементация MyInterface в виде экземпляра структуры (не указателя)
я должен в SetInterfacer передавать именно указатель на структуру?
почему она не может быть просто аллоцирована на стеке если даже у меня c это pointer receiver ?


Илья
20.01.2018
13:21:10
не знаю как тебе более абстрактно это пояснить :)
еще раз, проблема не в SetLogger, а в Logger, если ты метод без ссылки на ресивер объявишь (не мутирующий), то сама структура будет реализовывать интерфейс


Slach
20.01.2018
13:33:25
не знаю как тебе более абстрактно это пояснить :)
вроде нагуглил
https://medium.com/@agileseeker/go-interfaces-pointers-4d1d98d5c9c6
так, щас осталось переварить
вот кажется ключевая фраза статьи
the parameter type (a value or pointer) passed to a method/function that accepts an interface should match the implementing object’s method receiver
короче, я так понимаю
что поскольку у меня
func (c *MyType) funcName()...
pointer receiver
и я передаю интерфейс в качестве параметра
то я должен передавать его через ссылку
если будет просто
func (c MyType) funcName()
то можно передавать и значени и через ссылку и она будет dereference для ссылки сама делать
это все нужно для того чтобы когда я вызывал
c.interfacer.InterfaceMethod()
у меня правильно делалось dereference для с.interfacer?
так?
короче я понял окончательно
если имплементация передаваемой реализации интерфейса сделана as value
func (c Type) funcName()
то в функцию которая на вход принимает интерфейс я передаю саму структуру или указатель на структуру
пофигу
а если имплементация интерфейса сделана as pointer
func (c *Type) funcName
тогда я эту имплементацию интерфейса как pointer и должен передавать
и уже не важно что там в у меня в мутируемом объекте
func (d *ReceiverType) SetInferfacer(newValue MyInterface) {
}
или
func (d ReceiverType) SetInferfacer(newValue MyInterface) {
}


Andrew
20.01.2018
14:45:07
Воу воу откуда все бегут?

Michael ?
20.01.2018
14:46:07
Лично я - из ноды ?

Google

Олег
20.01.2018
14:53:54

Vasily Romanov
20.01.2018
14:54:53
в чате моего курса дали ссылку

Konstantine
20.01.2018
15:38:53
Gogland оказывается уже релизнулся и стал платным. Какая есть нормальная альтернатива бесплатная?

Daniil
20.01.2018
15:39:42

No
20.01.2018
15:40:50
Atom, liteide , даже видел плагин для Notepad++ )

Alexander
20.01.2018
15:41:47
Есть плагин для Idea

Konstantine
20.01.2018
15:42:31
Atom дрисня дикая.
Раз под Notepad++ есть, надо будет глянуть на Sublime Text, может туда просто пересяду, ибо лишь временами нужно что-то отредактировать и подебажить.

Vladislav
20.01.2018
15:50:55

Konstantine
20.01.2018
15:51:43

Daniil
20.01.2018
15:52:14
К слову, начал пересаживаться на емакс. Люди, тут все реально руками писать приходится

Vladislav
20.01.2018
15:52:47
Почему емакс, а не вим? Для вим, вроде, хороший плагин.

Daniil
20.01.2018
15:53:42
А плагин сейчас, на высоте

Maks
20.01.2018
15:56:10

Konstantine
20.01.2018
15:56:49

Vladislav
20.01.2018
15:57:05
Так купи.

Maks
20.01.2018
15:58:15
Notepad++ бесплатен, да и только. LiteIde тоже, судя по всему

Konstantine
20.01.2018
15:58:53
Так купи.
Ради пары домашних проектов тратиться на лицензию? Нахуй оно надо.

Vladimir
20.01.2018
16:00:09

Google

Maks
20.01.2018
16:01:09

Vladimir
20.01.2018
16:01:26

Konstantine
20.01.2018
16:01:29

Vladimir
20.01.2018
16:02:10

Konstantine
20.01.2018
16:02:25

Vladimir
20.01.2018
16:02:46

Konstantine
20.01.2018
16:03:16

Vladimir
20.01.2018
16:05:05

Konstantine
20.01.2018
16:05:12

Andrew
20.01.2018
16:51:51
Приветствую! Подскажите, почему обязательно нужно что нибудь послать в канал, чтобы тесты отработали?
По моему мнению, defer Close должен закрыть канал, и горутина завершится. Однако, это все равно не нравится флагу -race при запуске тестов

Shane
20.01.2018
18:10:42
Привет. Ребят можете подсказать фреймворк чисто по работе с api. Сокеты, аутентификация, сервисы. На клиенте react

Michael
20.01.2018
18:12:00
gramework

Slava
20.01.2018
19:14:58