Anonymous
https://play.golang.org/p/4K487V-z-p3 не?
Близко. Можно v кастануть в reflect.TypeOf(v)?
Anonymous
Судя по тому, что у меня возникли сложности, думаю мне надо подумать над логикой моего алгоритма ))
Michael
Близко. Можно v кастануть в reflect.TypeOf(v)?
https://golang.org/pkg/reflect/#Value.NumField а там и добраться к именам не долго
Anonymous
Я так и подозревал, что кастануть не получится, только через switch выбрать нужный тип для каста. Ну либо перебирать через reflect поля ))
Michael
Я так и подозревал, что кастануть не получится, только через 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)
Michael
https://blog.golang.org/laws-of-reflection
Anonymous
не судьба ))
Michael
Anonymous
Юзать y как родненький.
Anonymous
Ваще изначально хотел маралить и анмаршалить []interface{}
Michael
ну
Michael
v, ok := .()
Michael
if ok {pew pew}
Anonymous
Циклом перебрать все возможные типы? ))
Michael
если универсально, то reflect
Anonymous
Ладно, однострочником не отделаюсь, спасибо, буду думать дальше.
Alexander
а кто-то может подсказать - в GRPC можно каким-то образом закрыть стрим на сервере и сообщить клиенту почему стрим был зыкрыт ("server shutdown", "banned", "too many requests" - в общем какую-то строку передать)? гугл не помог - сложилось впечатление, что нельзя
Alexander
что-либо вроде CloseFrame-а в вебсокет протоколе, возможно свой подход какой есть
Alexander
наверн через trailing metadata может получиться
Vasily
там есть Shutdown
Vasily
и в этом случае на клиент отправляется сообщение в ошибке что сервер завершается
Alexander
а можно ссылку на описание или код?
Vasily
в случае если был запрос если нет - просто коннект закрывается и потом клиентом на той сторой переоткрывается
Alexander
аа - нашел - но это шатдаун всего сервера, у меня могут быть разные события
Vasily
https://godoc.org/google.golang.org/grpc#Server.GracefulStop https://godoc.org/google.golang.org/grpc#Server.Stop
Vasily
а, стрим
Vasily
тогда пожалуй через trailing metadata стоит пробовать
Alexander
попробую, спасибо, там есть еще Details поле у status-а как выяснилось тока что - при создании ошибки - но проставить можно только когда ошибку возвращаешь, а мне еще и на OK надо
Alexander
хотя на ОК - не обязательно в целом
I
Кто-нибудь использует gorm?
I
Когда делаю tx.Delete(&User{}, id) RowsAffected всегда 0, а tx.First(&user, id) возвращает пользователя корректно. Пробовал делать сначала .First а потом указатель на юзера передавать в .Delete(&user) всё-равно не работает
I
Пробовал делать .Unscoped().Delete(&user), .Where("id = ?", id).Delete(&User{})
Slach
Всем привет а как сделать такую штуку есть интерфейс есть две его имплементации хочу сделать map[string] чтобы в зависимости от string возвращались вот так не работает в golang слишком строгие типы ;) var m := map[string]InterfaceType { "key1": InterfaceImplementationStruct1{}, "key2": InterfaceImplementationStruct2{}, } неужели надо будет фигачить хелпер функцию в которой switch ?
Slach
ладно Роб, уговорили, сделал через switch ...
Anonymous
ладно Роб, уговорили, сделал через switch ...
Передавай от нас привет Робу!
Anonymous
Что-то я совсем запутался. Могу ли я для интерфейса написать метод? func (m MyInterface) DoSomething() Вроде ругается invalid receiver type
Alexei
или можешь вложенный тип с методом сделать, но там свои правила уже
Alexei
или func DoSome(m MyInterface)
Anonymous
Хех, думал напишу у интерфейса универсальный метод. Придётся реализовывать в каждой реализации интерфейса ((
Alexei
сделай общий тип с методом и вкладывай в каждую реализацию интерфейса
Pawel
Кто нибудь знает чятик по постгресу или по SQL ?
Pawel
https://t.me/pgsql
спасибо
Slach
Вот так должно работать. На что ругалось?
на несоответствие типов 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
@BloodJazMan https://play.golang.org/p/oeO5UG_rLso это не то, что ты хотел?
I
tx.Table("users").Delete("id = ?", id)
Вопрос не актуален, спасибо. Решил отказаться от странных орм в пользу raw sql
I
Так пиши raw sql на горме, я так и делаю
Ну вот я тоже до этого дошёл)
I
орм как оказалось не панацея. Как раз хоть в sql сложные запросы подучу, а то вообще разленился
Slach
@BloodJazMan https://play.golang.org/p/oeO5UG_rLso это не то, что ты хотел?
да это то что нужно, но у меня почему то golang 1.9.2 ругался что типы не совпадали
Michael
орм как оказалось не панацея. Как раз хоть в sql сложные запросы подучу, а то вообще разленился
как-то спросили как можно оптимизнуть проект с entity framework? а просто - выпилить его совсем)
I
Единственное что, горм не умеет в union.
во-во я уже даже забыл зачем он(
Mike
Возможно у тебя ресиверы были на поинтерах, тогда получается ошибка: cannot use B literal (type 😎 as type A in map value: B does not implement A (Do method has pointer receiver)
Nikita
как-то спросили как можно оптимизнуть проект с entity framework? а просто - выпилить его совсем)
Из всех орм - ef как бы один из лучших. Но обычно на дотнете мы писали процедуры и вызывали их из ef
Michael
Из всех орм - ef как бы один из лучших. Но обычно на дотнете мы писали процедуры и вызывали их из ef
сами бест практисы говорят - хочешь быстро - используй хранимки, и команада еф согласна с этим
Slach
угу, еще бы версионность хранимок вменяемо поддерживалась бы... а то люди всякие ухищрения используют для того чтобы хранимки атомарно обновлять
Michael
там ещё до версионности хранимок куча проблем выстрелит)
I
Можно ли выполнить несколько функций в одном if?
I
с назначением переменных
🏁Александр
сокр. кода до добр. не довед.
I
понял
Alexander
Кто-нибудь кодил на go для гугловского firebase? Есть задача слушать эвенты, оф поддержки в Go-клиенте их нет. Думаю есть ли смысл делать это Go? (альтернатива в виде ноды не очень возбуждает)
Andrei 🦉
Кто-нибудь кодил на go для гугловского firebase? Есть задача слушать эвенты, оф поддержки в Go-клиенте их нет. Думаю есть ли смысл делать это Go? (альтернатива в виде ноды не очень возбуждает)
по опыту работы с гугловым апи к bigquery могу посоветовать поискать альтернативные либы от гугла же, для bigquery я в свое время нарыл аж 3, правда все автосгенеренное г*вно, но функционал немного отличался от либы к либе
Alexander
спасибо. Еще они в своей оф доке советуют старый форк этой либы https://github.com/zabawaba99/firego
Alexander
но мне не нравятся там ишью трекер и активность последние полгода
Alexander
Под firebase пришлось писать клиента самим. Ничего вменяемого не нашли к сожалению((
давно? а чего не хватало? по идее мне пока только лисенить надо и отправлять в fcm для последнего вроде дела получше обстоят (есть даже отдельный сервер)