@gogolang

Страница 755 из 1630
Vasily Romanov
18.01.2018
16:00:30
нет, так не работает

под капотом-то он известен но когда мы кастуем - мы кастуемв конкретный тип

так что только reflect

Michael
18.01.2018
16:03:19
Тип сам должен вывестись, я так думаю. Под капотом же стопудово известен тип
Что есть интерфейс в Go? Описание типа и указатель на объект, вроде, так

Google
Andrew
18.01.2018
16:05:42
Сейчас пример накатаю, покажу, что хочу

https://play.golang.org/p/1DvpY8I8PlI Поправил чуток

Roman
18.01.2018
16:12:40
https://play.golang.org/p/1DvpY8I8PlI Поправил чуток
А что вы хотите забрать из структуры?

Andrew
18.01.2018
16:13:13
Их содержимое

Roman
18.01.2018
16:13:51
Так у вас же Value за это отвечает или я чего-то не понимаю. Может не самое правильное решение, но рабочее https://play.golang.org/p/Vlj03DJLagl

Andrew
18.01.2018
16:15:29
Ладно, сформулирую тогда так. Мне надо замаршалить []Interface{} в toml. А он мне отвечает "чувак, я умею только структуры маршалить".

Только что обнаружил, что стандартный json маршалит []interface{} без проблем. Дума. тогда вопрос снимаю, косяк в библиотеке toml'а.

Mike
18.01.2018
16:26:56
он и тут тоже

Andrew
18.01.2018
16:28:24
/voteban

Sergey
18.01.2018
16:29:58


Michael
18.01.2018
16:47:51
Их содержимое
https://play.golang.org/p/4K487V-z-p3 не?

смотри принт в мейне

Andrew
18.01.2018
16:48:52
https://play.golang.org/p/4K487V-z-p3 не?
Близко. Можно v кастануть в reflect.TypeOf(v)?

Google
Andrew
18.01.2018
16:50:12
Судя по тому, что у меня возникли сложности, думаю мне надо подумать над логикой моего алгоритма ))

Michael
18.01.2018
16:58:33
Близко. Можно v кастануть в reflect.TypeOf(v)?
https://golang.org/pkg/reflect/#Value.NumField а там и добраться к именам не долго

Andrew
18.01.2018
16:59:32
Я так и подозревал, что кастануть не получится, только через switch выбрать нужный тип для каста. Ну либо перебирать через reflect поля ))

Michael
18.01.2018
17:02:06
Я так и подозревал, что кастануть не получится, только через switch выбрать нужный тип для каста. Ну либо перебирать через reflect поля ))
2. Reflection goes from reflection object to interface value. Like physical reflection, reflection in Go generates its own inverse. Given a reflect.Value we can recover an interface value using the Interface method; in effect the method packs the type and value information back into an interface representation and returns the result: // Interface returns v's value as an interface{}. func (v Value) Interface() interface{} As a consequence we can say y := v.Interface().(float64) // y will have type float64. fmt.Println(y)

https://blog.golang.org/laws-of-reflection

Michael
18.01.2018
17:04:18
Andrew
18.01.2018
17:04:38
Юзать y как родненький.

Ваще изначально хотел маралить и анмаршалить []interface{}

Michael
18.01.2018
17:05:38
ну

v, ok := .()

if ok {pew pew}

Andrew
18.01.2018
17:06:35
Циклом перебрать все возможные типы? ))

Michael
18.01.2018
17:06:40
если универсально, то reflect

Andrew
18.01.2018
17:07:17
Ладно, однострочником не отделаюсь, спасибо, буду думать дальше.

Alexandr
18.01.2018
18:39:42
а кто-то может подсказать - в GRPC можно каким-то образом закрыть стрим на сервере и сообщить клиенту почему стрим был зыкрыт ("server shutdown", "banned", "too many requests" - в общем какую-то строку передать)? гугл не помог - сложилось впечатление, что нельзя

что-либо вроде CloseFrame-а в вебсокет протоколе, возможно свой подход какой есть

наверн через trailing metadata может получиться

Vasily Romanov
18.01.2018
19:13:42
там есть Shutdown

Google
Vasily Romanov
18.01.2018
19:13:54
и в этом случае на клиент отправляется сообщение в ошибке что сервер завершается

Alexandr
18.01.2018
19:14:10
а можно ссылку на описание или код?

Vasily Romanov
18.01.2018
19:14:32
в случае если был запрос если нет - просто коннект закрывается и потом клиентом на той сторой переоткрывается

Alexandr
18.01.2018
19:15:22
аа - нашел - но это шатдаун всего сервера, у меня могут быть разные события

Vasily Romanov
18.01.2018
19:15:24
https://godoc.org/google.golang.org/grpc#Server.GracefulStop https://godoc.org/google.golang.org/grpc#Server.Stop

а, стрим

тогда пожалуй через trailing metadata стоит пробовать

Alexandr
18.01.2018
19:17:17
попробую, спасибо, там есть еще Details поле у status-а как выяснилось тока что - при создании ошибки - но проставить можно только когда ошибку возвращаешь, а мне еще и на OK надо

хотя на ОК - не обязательно в целом

Ilya
19.01.2018
01:23:19
Кто-нибудь использует gorm?

Когда делаю tx.Delete(&User{}, id) RowsAffected всегда 0, а tx.First(&user, id) возвращает пользователя корректно. Пробовал делать сначала .First а потом указатель на юзера передавать в .Delete(&user) всё-равно не работает

Пробовал делать .Unscoped().Delete(&user), .Where("id = ?", id).Delete(&User{})

Slach
19.01.2018
02:25:33
Всем привет а как сделать такую штуку есть интерфейс есть две его имплементации хочу сделать map[string] чтобы в зависимости от string возвращались вот так не работает в golang слишком строгие типы ;) var m := map[string]InterfaceType { "key1": InterfaceImplementationStruct1{}, "key2": InterfaceImplementationStruct2{}, } неужели надо будет фигачить хелпер функцию в которой switch ?

ладно Роб, уговорили, сделал через switch ...

Andrew
19.01.2018
03:27:27
ладно Роб, уговорили, сделал через switch ...
Передавай от нас привет Робу!

Andrew
19.01.2018
04:53:50
Что-то я совсем запутался. Могу ли я для интерфейса написать метод? func (m MyInterface) DoSomething() Вроде ругается invalid receiver type

Alexei
19.01.2018
04:55:35
или можешь вложенный тип с методом сделать, но там свои правила уже

или func DoSome(m MyInterface)

Google
Andrew
19.01.2018
04:58:01
Хех, думал напишу у интерфейса универсальный метод. Придётся реализовывать в каждой реализации интерфейса ((

Alexei
19.01.2018
05:01:28
сделай общий тип с методом и вкладывай в каждую реализацию интерфейса

Ilya
19.01.2018
05:05:53
Pawel
19.01.2018
06:02:44
Кто нибудь знает чятик по постгресу или по SQL ?

Pawel
19.01.2018
06:09:53
https://t.me/pgsql
спасибо

Slach
19.01.2018
08:50:29
Вот так должно работать. На что ругалось?
на несоответствие типов InterfaceImplementationStruct1{} это структура а не интерфейс пытался делать InterfaceImplementationStruct1{}.Interface так тоже не дает так что пришлось switch в функцию пихать получилось как то так //ReporterInterface common interface for anomaly reporting type ReporterInterface interface { ReportAnomaly( config *cfg.ConfigType, appID, anomalyName, categoryDimension, categoryValue, metricName, metricValue string, dateNames []time.Time, tsData []float64, probability float64, nestedTS map[string]map[string][]float64, ) } //Reporter Base structure for inheritance over embedding type Reporter struct { ReporterInterface } func getReporterByKey(key string) (reporter *Reporter, err error) { switch key { case "files": r := FileReporter{} return &r.Reporter, nil case "recast": r := RecastReporter{} return &r.Reporter, nil default: return nil, fmt.Errorf("invalid reportType key=%s", key) } }

Mike
19.01.2018
09:28:26
@BloodJazMan https://play.golang.org/p/oeO5UG_rLso это не то, что ты хотел?

Ilya
19.01.2018
09:48:17
tx.Table("users").Delete("id = ?", id)
Вопрос не актуален, спасибо. Решил отказаться от странных орм в пользу raw sql

Ilya
19.01.2018
09:49:10
Так пиши raw sql на горме, я так и делаю
Ну вот я тоже до этого дошёл)

Mykyta
19.01.2018
09:49:28
Ilya
19.01.2018
09:49:55
орм как оказалось не панацея. Как раз хоть в sql сложные запросы подучу, а то вообще разленился

Slach
19.01.2018
09:50:06
@BloodJazMan https://play.golang.org/p/oeO5UG_rLso это не то, что ты хотел?
да это то что нужно, но у меня почему то golang 1.9.2 ругался что типы не совпадали

Michael
19.01.2018
09:51:05
орм как оказалось не панацея. Как раз хоть в sql сложные запросы подучу, а то вообще разленился
как-то спросили как можно оптимизнуть проект с entity framework? а просто - выпилить его совсем)

Google
Mike
19.01.2018
09:52:16
Возможно у тебя ресиверы были на поинтерах, тогда получается ошибка: cannot use B literal (type ? as type A in map value: B does not implement A (Do method has pointer receiver)

Mykyta
19.01.2018
09:52:49
как-то спросили как можно оптимизнуть проект с entity framework? а просто - выпилить его совсем)
Из всех орм - ef как бы один из лучших. Но обычно на дотнете мы писали процедуры и вызывали их из ef

Michael
19.01.2018
09:53:54
Из всех орм - ef как бы один из лучших. Но обычно на дотнете мы писали процедуры и вызывали их из ef
сами бест практисы говорят - хочешь быстро - используй хранимки, и команада еф согласна с этим

Slach
19.01.2018
09:55:22
угу, еще бы версионность хранимок вменяемо поддерживалась бы... а то люди всякие ухищрения используют для того чтобы хранимки атомарно обновлять

Michael
19.01.2018
09:56:15
там ещё до версионности хранимок куча проблем выстрелит)

Страница 755 из 1630