@gogolang

Страница 990 из 1630
The
08.04.2018
23:43:11
interface{} ?
На каждый метод, свой интерфейс реализующий Unmarshaller?

или можно как-то проще?

Я бы хотел что-то вроде resp := Response{Data: UsersResponse}

и туда заанмаршалить, но такое видимо не сработает?

Google
The
09.04.2018
00:09:25
Имплементировал Unmarshaler, а он валится в рекурсию :(

У кого-то есть мысли, как тактично это обыграть? Потому что методов оче много, под каждый писать свой Unmarshaler - это похоже на идиотизм. Можно, конечно, генерировать кучу {Method}Response, и эмбедить туда Error и прочее. Но, кмк, тоже не очень красиво.

The
09.04.2018
00:47:10
потому что одна и та же писанина, по сути.. :(

Nurzhan
09.04.2018
00:48:04
В го строгая типизация, думаю, без этого никак

С пустым интерфейсом в этом случае будет куча головной боли, пока сделаешь type assertion

The
09.04.2018
00:50:54
тут не столько в типизации проблема, сколько косяк в этой рекурсии. По сути, мне бы подошло как раз unmarshaler, если бы его можно было бы вызвать без рекурсии, как будто самого интерфейса нет. может какую-то прослойку пригромоздить, но пока ничего в голову не пришло.

можно на сам Response повесить Unmarshaler, а на Data какой-то свой интерфейс завернуть, но нужно на практике проверить, зайдет ли такой вариант.

The
09.04.2018
01:00:32
Совсем не понял, откуда рекурсия взялась, можно пример?
вы правы, я лохонулся. сейчас глянул в код, и не то передавал в Decode(). Сейчас переделал, вот такую ошибку получаю: json: cannot unmarshal object into Go struct field Response.data of type json.Unmarshaler

Slava
09.04.2018
01:01:41
через RawData можно

с другой стороны, если каждый метод возвращает разный ответ - то правильнее под каждый метод свою структуру делать

Google
The
09.04.2018
01:03:14
с другой стороны, если каждый метод возвращает разный ответ - то правильнее под каждый метод свою структуру делать
нет, там базовая структура ответа вот такая как я описал, + ещё может быть в нагрузку всякие pagination и прочее. имелось ввиду RawMessage?

Slava
09.04.2018
01:03:34
что значит базовая структура ответа?

если у тебя респонс это конверт и data это просто набор битов, то передавай data в анмаршалер

Marlik
09.04.2018
01:05:44
господа, а как тестировать API? просто описать методы, и проверять что возвращается не пустой слайс (например)?
Мона неправильные типы данных передать, мона их вообще не передавать ну и т. д. Представь себе что ты поломать систему хочешь.))

The
09.04.2018
01:06:32
что значит базовая структура ответа?
да, это конверт. я понял, в data писать rawMessage, и два раза декодить, первый раз ответ сервера, второй раз саму инфу.

Marlik
09.04.2018
01:07:17
Не любить электрон и ноду щас модно, это как с пхп чуть раннее
Так то есть статейка на хабре, када нода не потянула ВКонтактике, а вот гошечка очень даже... могу ссылку поискать...

Nurzhan
09.04.2018
01:07:40
Если в ответе приходит либо error либо response, имеет смысл. Если приходит и error и response, то не вижу

The
09.04.2018
01:12:04
Не могу понять, что это даст?
меньше писанины, формат ответа почти всегда совпадает, за исключением свойства data.

The
09.04.2018
01:16:06
всем спасибо

Kirill
09.04.2018
02:36:50
смотрю я на это, и понять не могу, что тут вообще происходит

http://backendconf.ru/2018/author/2959

Александр
09.04.2018
05:53:50
Добрый день! помогите разобраться с кодом https://play.golang.org/p/eRa9Y9aQh5Y

AddContractHandler при выполнении в таблице next номер контракта меняется но номер таблицы contact остаётся прежним

в документации подобное решается либо db.Save(&contact) или db.Update(&contact) оба способа пробывал

F
09.04.2018
06:49:25
Пахнет json-rpc
grpc если точнее

Artem
09.04.2018
06:50:45
grpc если точнее
У grpc ж не JSON объекты летают, а тут JSON, да ещё и поля именно data, error

Google
Александр
09.04.2018
06:59:44
sqlite

Artem
09.04.2018
06:59:47
Точнее орм

Александр
09.04.2018
06:59:53
gorm

Илья
09.04.2018
07:01:11
Artem
09.04.2018
07:02:28
У тебя в форм велью точно инт?

Вот это вот r.FormValue("id")

Потому что по доке, как ты делаешь, ток с интами работает

Александр
09.04.2018
07:03:58
да но там fmt.Printf("%S",contact) выводит в логи что запрос прошёл

Artem
09.04.2018
07:09:24
Сделай так

err := DB.Save(&contact).Error If err != nil Panic(err)

Александр
09.04.2018
07:47:05
проблема решена

id и вправду был string, но как оказалось для orm это не проблема с ним она тоже работает. проблема была банальная. id посылался ajax . я сделал ошибку за место data: {"id": id}, посылал date: {"id": id},

Artem
09.04.2018
08:16:44
id и вправду был string, но как оказалось для orm это не проблема с ним она тоже работает. проблема была банальная. id посылался ajax . я сделал ошибку за место data: {"id": id}, посылал date: {"id": id},
Когда ты туда пихаешь стринг, он воспринимает это как строку для where и скорее всего first возвращал ошибку, которая не обрабатывалась

Denys
09.04.2018
10:12:37
есть ли смысл для слайса на старте задавать length ?

вот например заранее известно сколько в слайсе элементов будет

обычно capacity ставится конкретное число но length в 0

slice ссылается на array потому аллокаций не будет

Alexandr
09.04.2018
10:13:13
если эта длина не будет меняться, то логичнее использовать массив а не слайс?

Google
Илья
09.04.2018
10:14:17
вот например заранее известно сколько в слайсе элементов будет
если заранее известно, то лучше сразу указать

Denys
09.04.2018
10:15:48
если ставить length то массив забиваться прийдется default значениями

т.е это более ресурсозатратно не?

Alexander
09.04.2018
10:16:35
т.е это более ресурсозатратно не?
напишите бенчи, если это действительно очень важно для вашей программы

Виктор
09.04.2018
10:16:38
т.е это более ресурсозатратно не?
Ты не учитываешь аллокации памяти

Илья
09.04.2018
10:16:38
хм, может я неправильно понял вопрос? вопрос в make([]int,10) vs make([]int,0,10)?

или вопрос вообще в указании размера?

Denys
09.04.2018
10:17:40
make([]int, 0, 10) vs make([]int, 10, 10) ?)

Илья
09.04.2018
10:21:56
по идее, первое может быть дешевле, но без бенмарка я не уверен

Denys
09.04.2018
10:23:36
по идее одинаково, просто принт length делает

потому что underlaying array в обоих случаях создастся

с zero values

в обоих случаях заполняется я думаю

просто принт отрабатывает по разному

но это не точно потому ис прашиваю, может договоренность есть какая-то

Илья
09.04.2018
10:25:25
сходу в исходниках реализацию make не могу найти, а будет ли инициализация zero values при make([]int,0,10) или нет без бенчмарка или исходников, я не уверен

Илья
09.04.2018
10:32:30
ну, вообще, просто интересно

Google
Daniel
09.04.2018
10:32:46
тогда надо в исходники лезть

Илья
09.04.2018
10:33:13
уже там, только вот реализация сходу не гуглится :)

Daniel
09.04.2018
10:33:21
а?!

Илья
09.04.2018
10:34:45
есть сигнатуры функций с builtin, реализацию ищу :S

Egor
09.04.2018
10:35:01
заофтоплю немного есть фанаты?) сколько тут - ниразу не слышал упоминаний, а ребята крутое дело делают) http://golangshow.com/

Илья
09.04.2018
10:35:13
https://golang.org/doc/effective_go.html#allocation_make new([]int) returns a pointer to a newly allocated, zeroed slice structure, that is, a pointer to a nil slice value.

Daniel
09.04.2018
10:36:36
есть сигнатуры функций с builtin, реализацию ищу :S
https://github.com/golang/go/blob/go1.10/src/runtime/slice.go#L46

Илья
09.04.2018
10:37:18
https://github.com/golang/go/blob/go1.10/src/runtime/slice.go#L46
спасибо, копал не в ту сторону :S

Илья
09.04.2018
10:37:32
(один из админов, если я не ошибаюсь) ну вроде ведущий голангшоу

Daniel
09.04.2018
10:38:43
как минимум @alek_si - отец основатель этого шоу

ну и я пару раз засветился

Egor
09.04.2018
10:40:19
огооонь)

Илья
09.04.2018
10:41:23
но это не точно потому ис прашиваю, может договоренность есть какая-то
вообщем, нет, разницы никакой, len влияет только на поле в sliceheader

Kirill
09.04.2018
10:44:16
А что там?
2k18, целый доклад о gometalinter

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