Size: a a a

2020 May 10

Д

Данил in Go-go!
))
источник

ВС

Владимир Столяров... in Go-go!
Вот только именно требовать на сервере обязательно именно такой заголовок надо не забыть, иначе эта самая система cors попросту бессмысленная
источник

ВС

Владимир Столяров... in Go-go!
Потому что на самом деле post запрос отправляется, обрабатывается на сервере, но браузер просто не даёт прочитать ответ. То есть, любой сторонний ресурс сможет делать от имени авторизованного пользователя все что угодно
источник

RS

Roman Sharkov in Go-go!
Есть у меня срез указателей разных типов. Из этого среза хочу по индексу достать указатель, создать копию объекта того-же типа что и указатель и отдать новый указатлеь на копию 🤔

есть идеи как сиё реализовать рефлексией?

P.S.
а, вот вроде нашёл что-то похожее (https://medium.com/kokster/go-reflection-creating-objects-from-types-part-ii-composite-types-69a0e8134f20), не то гуглил 🙃
источник

АП

Александр Попов... in Go-go!
Roman Sharkov
Есть у меня срез указателей разных типов. Из этого среза хочу по индексу достать указатель, создать копию объекта того-же типа что и указатель и отдать новый указатлеь на копию 🤔

есть идеи как сиё реализовать рефлексией?

P.S.
а, вот вроде нашёл что-то похожее (https://medium.com/kokster/go-reflection-creating-objects-from-types-part-ii-composite-types-69a0e8134f20), не то гуглил 🙃
ша? Срез указателей разных типов?
источник

RS

Roman Sharkov in Go-go!
Александр Попов
ша? Срез указателей разных типов?
угу
источник

АП

Александр Попов... in Go-go!
var AnyTypeSlice []AnyType ?
источник

RS

Roman Sharkov in Go-go!
Александр Попов
ша? Срез указателей разных типов?
var type = []interface{}{
 &Foo{},
 &Bar{},
 &Baz{},
}
источник

АП

Александр Попов... in Go-go!
использование interface{} это явный указатель что что-то пошло не так
источник

АП

Александр Попов... in Go-go!
исключений очень мало
источник

АП

Александр Попов... in Go-go!
что ты пытался решить?
источник

RS

Roman Sharkov in Go-go!
Александр Попов
использование interface{} это явный указатель что что-то пошло не так
да я понимаю, но в моём случае походу придётся хакать..

в общем, есть у меня в пакете event ряд типов аля

type EventFoo struct {
 Foo string json:”foo”
}

type EventBar struct {
 Bar int`json:”bar”`
 Baz float64`json:”baz”`
}

type EventFuzz struct {
 Maz int json:”maz”
}

и мне периодически приходят JSON’ки такого типа:

type Input struct {
 Type string json:”type”
 Data json.RawMessage json:”data”
}

и мне в зависимости от имени типа нужно анмаршалить в тот или иной Go’шный тип
источник

АП

Александр Попов... in Go-go!
иии?
источник

АП

Александр Попов... in Go-go!
ну вы делаете анмашал сначало в Input, берете от туда Type и потом внутри свича еще один анмашал в нужную структуру
источник

RS

Roman Sharkov in Go-go!
я вот размышляю как лучше всего это написать дабы не писать нечто похожее на:

var d interface{}
decode := func(tp interface{}) error {
 d = tp
 return json.Unmarshal(b, &d)
}
switch i.Type {
case “Foo”:
 return decode(&EventFoo{})
case “Bar”:
 return decode(&EventBar{})
case “Fuzz”:
 return decode(&EventFuzz{})}
}


не хотелось бы при добавлении типов событий добавлять case в этот switch
источник

VM

Vladislav Milenin in Go-go!
Roman Sharkov
я вот размышляю как лучше всего это написать дабы не писать нечто похожее на:

var d interface{}
decode := func(tp interface{}) error {
 d = tp
 return json.Unmarshal(b, &d)
}
switch i.Type {
case “Foo”:
 return decode(&EventFoo{})
case “Bar”:
 return decode(&EventBar{})
case “Fuzz”:
 return decode(&EventFuzz{})}
}


не хотелось бы при добавлении типов событий добавлять case в этот switch
В мапу добавляйте просто кек
источник

RS

Roman Sharkov in Go-go!
Vladislav Milenin
В мапу добавляйте просто кек
разница в UX не большая
источник

VM

Vladislav Milenin in Go-go!
Roman Sharkov
разница в UX не большая
Ну лучше не будет
источник

RS

Roman Sharkov in Go-go!
Vladislav Milenin
Ну лучше не будет
ну вот я пытаюсь понять, факт ли это или не факт, пока-что думаю что не факт
источник

RS

Roman Sharkov in Go-go!
к сожалению получить все типы пакета нельзя, если я правильно понимаю.. т.е. в init я не смогу просто заинициализировать мапу типов
источник