
trilog
25.12.2017
08:26:54
все равно что вы выйдете на стадион и просто заорете "привет", в ожидании ответочки

Arch
25.12.2017
08:27:11
Народ, а доступность переменных в структуре так же определяется заглавной буковй?

Ilya
25.12.2017
08:28:59

Arch
25.12.2017
08:29:51
Мля...ть

Google

Arch
25.12.2017
08:30:03
В смысле спасибо

Виталий
25.12.2017
08:36:33
Народ. С мп3 кто-нибудь пробовал? В питоне есть и pygame и mpg123, в го самым простым было пользовать библиотеку от одного японца (oto hajime) что ли, но там проблема воспроизведения на raspberry pi - звук будто пластинку тянут

Arch
25.12.2017
08:52:17
type RoomList map[int]*Room // Rooms List
func (rl *RoomList) AddToList(r *Room) {
*rl[r.id] = r
}
пишет: invalid operation: rl[r.id] (type *RoomList does not support indexing)
Что делаю не так?

John
25.12.2017
08:55:49

Arch
25.12.2017
08:59:34
А еще вопрос, если r - это указатель на структуру Room, то обращение к нему должно быть таким же как и к rl? те (*r).id?
почему компилятор пропустил r.id?

John
25.12.2017
09:01:20

Daniel
25.12.2017
09:03:32

Arch
25.12.2017
09:03:47
Не должно
те когда мы обращаемся к самой структуре напрямую надо (*) , а если к полям структуры, то можно просто так?

Daniel
25.12.2017
09:04:24
Не удержался :)

Arch
25.12.2017
09:05:03
Благодарю!

Andrey
25.12.2017
09:33:24
Daniel Podolsky Посмотрел вашу презентацию. Можете поподробнее сказать чем плохи строки вместо пременных? Когда в структуру пишем строки.

Google

Alexey
25.12.2017
09:59:26

Andrey
25.12.2017
09:59:51
https://devconf.ru/data/devconf2016/ppt/185.pdf
спрашиваю, потому что хочу писать так, чтобы код был как можно оптимальней.

?
25.12.2017
10:21:00

Demuz
25.12.2017
10:46:48
Доброго времени суток всем! Есть один вопрос. Имеем структуру, которая получается приемом JSON POST запроса.
type ArgsList struct {
Arg1 string
Arg2 string
Arg3 string
и т.д.
}
Получаю принятые данные, весь ArgList - {"ArgList": {"Arg1": "", "Arg2": "", "Arg3": "", и т.д.}}
Теперь, нужно проверить динамически каждый параметр на пустоту.
var argList ArgList <--- Заполнили инстанс данными из принятого JSON.
resultErr := "Вы передали пустой %v"
if argList.Arg1 != "" || argList.Arg2 != "" || argList.Arg3 != "" {
result := fmt.Sprintf(resultErr, ???) (Вот здесь то и нужно вместо вопросов вставить конткретное поле, то есть Arg1, либо Arg2 и тд.)
}

some_random_anonymous
25.12.2017
10:48:54

plq
25.12.2017
10:52:10

Demuz
25.12.2017
10:53:47
Доброго времени суток всем! Есть один вопрос. Имеем структуру, которая получается приемом JSON POST запроса.
type ArgsList struct {
Arg1 string
Arg2 string
Arg3 string
и т.д.
}
Получаю принятые данные, весь ArgList - {"ArgList": {"Arg1": "", "Arg2": "", "Arg3": "", и т.д.}}
Теперь, нужно проверить динамически каждый параметр на пустоту.
var argList ArgList <--- Заполнили инстанс данными из принятого JSON.
resultErr := "Вы передали пустой %v"
if argList.Arg1 != "" || argList.Arg2 != "" || argList.Arg3 != "" {
result := fmt.Sprintf(resultErr, ???) (Вот здесь то и нужно вместо вопросов вставить конткретное поле, то есть Arg1, либо Arg2 и тд.)
}
Допустим, имеем 20 полей Arg, нужно кратко ответить пользователю, какое именно из полей он передал пустым. Возможна ли краткая реализация такого?


Alexey
25.12.2017
10:58:04

Demuz
25.12.2017
11:08:31

Vasily Romanov
25.12.2017
11:08:35
Сегодня вышла первая часть моего курса по Go на Coursera. Наслаждайтесь :)
https://www.coursera.org/learn/golang-webservices-1?utm_source=mipt&utm_medium=institution&utm_campaign=telegram_post_mrg

Anatoly
25.12.2017
11:09:52

Demuz
25.12.2017
11:13:32
Спасибо. Рефлект знаю. Думал может проще решение есть.
Мне почему то всегда кажется, что проходить по каждому полю, это потеря производительности. Может заблуждаюсь. Незнаю. Эти мысли ничем не подкреплены.

Daniel
25.12.2017
11:15:51

Andrey
25.12.2017
11:16:28
страница 13
что имеется ввиду?
Что плохо в Go как в языке Питонизмы:
строки вместо переменных
тут в примере массив строк в структуре

Google

Andrey
25.12.2017
11:18:11
это не правильно?

Arch
25.12.2017
11:22:13
func (rl RoomList) AddToList() {}
Народ подскажите, если для структуры определен метод, то при вызове этого метода структура копируется в него или передается по ссылке?
Равнозначны ли по памяти func (rl RoomList) AddToList() {} и func (rl *RoomList) AddToList() {}?

Alexei
25.12.2017
11:23:20

Andrey
25.12.2017
11:26:08
если это type []Room - он про массив стурктур не писал.

Arch
25.12.2017
11:26:09

Alexei
25.12.2017
11:26:21

Arch
25.12.2017
11:26:32
Ну в смысле - да
type RoomList map[int]*Room
то есть при каждом вызове метода func (rl RoomList) AddToList() {} в памяти будет создаваться полная копия структуры rl?

Alexei
25.12.2017
11:27:27
тогда по ссылке, разницы (*RoomList) или (RoomList) по памяти не будет
мапа, как и слайс - это ссылка же

Arch
25.12.2017
11:28:03
Структура может быть с множеством полей
то есть получается что разница между (*RoomList) и (RoomList) лишь в объекте к которым применяется метод, для ссылки на *RoomList будут работать методы объявленные для func (rl *RoomList) AddToList(), а для RoomList будут работать методы объявленные для func (rl RoomList) AddToList()
так?

Andrey
25.12.2017
11:31:44
я думаю правильнее будет написать тестовую прогу и проверить. А не верить на слово

Alexei
25.12.2017
11:32:01

Andrey
25.12.2017
11:33:13
бенчмарк тебе покажет скольок памяти сьела функция

Google

Alexei
25.12.2017
11:33:40
в функцию (*RoomList) будет передан указатель rl, а в (RoomList) будет скопирована структура, в случае если RoomList - это структура, если это map или slice, то в первом случае будет передан указатель на ... во втором сам map или slice, а т.е. ссылка

Arch
25.12.2017
11:35:09

Nikolay
25.12.2017
11:45:09
нет никакого смысла в метод инстанса передавать сам инстанс по значению
вот вообще никакого
ибо смысл метода объекта в общем случае - это манипуляция его внутренним состоянием, т.е. стейт машина

Arch
25.12.2017
11:48:56

Евгений
25.12.2017
11:48:57
тогда проще все метоы делать с * ( pointer receiver )

Andrey
25.12.2017
11:49:06
вы хотите сказать что методы обьекта только для манипуляций внутрениими даными? А как тогда обьекту предавать ынешние данные? геттерами сететрами?

Admin
ERROR: S client not available

Nikolay
25.12.2017
11:49:18

Andrey
25.12.2017
11:49:31
так он про это же и писал вроде?

Alexey
25.12.2017
11:49:51

Nikolay
25.12.2017
11:50:06

Andrey
25.12.2017
11:50:50
я из вашего поста это понял

Arch
25.12.2017
11:51:09
какой смысл в вызове метода для структуры, передавать в этот метод копию структуры, если он вызывается исключительно для нее, а все остальное можно передать параметрами в метод

Alexey
25.12.2017
11:51:21
А если там внутри какие-нибудь sync.Mutex лежат в структуре, то без указателя вообще багов можно наловить тысячи

Евгений
25.12.2017
11:52:03

Alexey
25.12.2017
11:52:35

Arch
25.12.2017
11:52:39

Google

Евгений
25.12.2017
11:53:04
а дальше возможные веселые фокусы, когда элемент добавил, а он не добавился )

Arch
25.12.2017
11:53:18

Евгений
25.12.2017
11:53:37
смысла - ноль, но много места для багов

Alexey
25.12.2017
11:54:39

Arch
25.12.2017
11:56:48

Alexey
25.12.2017
11:57:14

Arch
25.12.2017
11:57:44
копировать == баг

Alexey
25.12.2017
11:58:21
копировать == баг
Почему баг-то? Бывает, когда нужно именно копирование.
Вон в том же logrus.WithField() как пример

Arch
25.12.2017
12:00:14
Ну вроде как считается, что методы для структуры - это замена классического ооп, но при использовании методов класса в других ЯП вы же не оперируете копией исходного объекта, а непосредственно самим объектом
Что сбивает с толку при переходе на го

Aleksandr
25.12.2017
12:00:58

Alexey
25.12.2017
12:01:05

Arch
25.12.2017
12:02:02
Возможно мой кругозор слишком узок и это действительно может быть настолько востребованная фича, что стоит отказаться от "интуитивного" поведения, ожидаемого при использовании данного функционала.

Евгений
25.12.2017
12:02:18
а race conditiond detector такое видит?

Alexey
25.12.2017
12:02:50

Евгений
25.12.2017
12:03:07
хуже, что иногда нет )

Arch
25.12.2017
12:03:27
Дьявол кроется в деталях)))

Andrey
25.12.2017
12:06:28
interface это указатель?

Эмин
25.12.2017
12:07:02
не уверен что интерфейс может быть указателем...

Andrey
25.12.2017
12:07:17
type TreeCell struct {
Master *Master
Tabs interface{}
}
какой будет размер структуры?