
Александр
06.12.2017
15:43:22
ошибок парса json
jsonDecoder := json.NewDecoder(r.Body)
err = jsonDecoder.Decode(modelStruct)
по идеи в err должна быть не строка ?

Aleksandr
06.12.2017
15:44:27
ну а с чего ты взял что строка?

Google

Александр
06.12.2017
15:45:04
сделал log.Print(err)

Aleksandr
06.12.2017
15:45:18
и?
он тебе показал тип?

Александр
06.12.2017
15:48:12
ну он так и не покажет
он просто строку распечатал
поставил брейкпоинт, обычный err
тип error

Aleksandr
06.12.2017
15:48:40
error - это интерфейс

Alexander
06.12.2017
15:48:55

Александр
06.12.2017
15:49:35

Vladimir
06.12.2017
15:49:42
Всем привет.
Установил plugin Go для VS Code. Все время пишет The "gocode" command is not available., хоть все пакеты уже установил. GOPATH вроде настроен. В чем может быть проблема?

Aleksandr
06.12.2017
15:50:44
errorString

Google

Александр
06.12.2017
15:51:03
ну это я и так вижу
в документации долбили про какую то структуру, где есть поле

Aleksandr
06.12.2017
15:51:35

Vladimir
06.12.2017
15:51:55
?

Мерлин
06.12.2017
15:52:01
он просто строку распечатал
Потому что любая ошибка может быть приведена к строке. Error в Go – это интерфейс, с одним методом, возвращающим строку

Aleksandr
06.12.2017
15:52:15

Александр
06.12.2017
15:52:38
блин я уже выше скидывал демку, там две строчки

Aleksandr
06.12.2017
15:52:55

Александр
06.12.2017
15:53:02
err := json.NewDecoder(r.Body).Decode(struct)
мне надо понять в каком поле он облажался

Aleksandr
06.12.2017
15:53:14
демку сделай

Александр
06.12.2017
15:53:27
для этого надо изнутри выковорить информацию

Мерлин
06.12.2017
15:53:49

Александр
06.12.2017
15:54:09

Aleksandr
06.12.2017
15:54:09

Мерлин
06.12.2017
15:54:30

Александр
06.12.2017
15:54:59
ну вот я там видел в примерах что-то, а как приведение к типу добавит туда информации?

Aleksandr
06.12.2017
15:55:31
сделай демку уже

Александр
06.12.2017
15:55:34
у нас есть вася, он человек. Мы приводим его к типу "строитель" и нихрена специализация там заполнена не будет

Мерлин
06.12.2017
15:57:15

Google

Мерлин
06.12.2017
15:57:48
Ты явно не знаком с основами языка. Посмотри, там немного

Александр
06.12.2017
15:58:07
ну там что-то через свитч хреначили
но если я не вижу в отладчике инфа, что извлекать то?

Aleksandr
06.12.2017
15:58:56
демку сделай

Mush
06.12.2017
16:00:34
сделал log.Print(err)
разве это не приводит к вызову метода String() если он есть у выводимого объекта?
поэтому и получается что string
log.Printf(“%+v”, err) - вроде так истинное значение можно вывести

Александр
06.12.2017
16:03:20
ясный фиг что приводит
но я смотрю в IDE
поставив брекпоинт
держи демку блин

Aleksandr
06.12.2017
16:06:15
https://play.golang.org/p/_XeSkH19E8

Александр
06.12.2017
16:07:45
магия блин

Александр
06.12.2017
16:07:57
я уже сам так привел и внезапно она "заполнилась"
при жесткой типизации, если я возращаю тип string он всегда тип string
а тут возращают тип error (у которого нет и намека на структуру внутри по отладчику)

Aleksandr
06.12.2017
16:09:21

Александр
06.12.2017
16:09:33
как тогда он из воздуха взял данные?

Aleksandr
06.12.2017
16:09:39

Александр
06.12.2017
16:11:40
я смотрю на подсказки IDE

Aleksandr
06.12.2017
16:12:07
странная приоритезация у тебя)

Google

Александр
06.12.2017
16:12:19
возращаемый тип error (интерфейс)

Aleksandr
06.12.2017
16:12:28
нет, возвращает другой тип. смотри строку 18
ты 10 минут пытался доказать что невозможно сделать то что невозможно. теперь пытаешься доказать, что невозможно было сделать то, что сделано

Alexander
06.12.2017
16:15:20
struct Person {
name string
}
xml.Marshal(Person) в итоге получится <Person><name></Person>

Александр
06.12.2017
16:15:39
так.. err := json.NewDecoder(r.Body).Decode(struct) возращает не тоже самое

Aleksandr
06.12.2017
16:15:50

Alexander
06.12.2017
16:16:13
как сделать person с маленькой буквы? Я пошел через доп структуру, которая является наследником и преобразуется с маленькой буквой типа struct person {Person}
Можно как красивее это сделать?

Alexander
06.12.2017
16:16:33
В https://play.golang.org/

Admin
ERROR: S client not available

Aleksandr
06.12.2017
16:16:48
просто в гугл вбей golang xml marshal

Alexander
06.12.2017
16:17:05
и куда

Aleksandr
06.12.2017
16:17:09

Alexander
06.12.2017
16:17:26
куда вставлю тэг, person это название структуры а не филда

Александр
06.12.2017
16:17:58
да бред ?

Aleksandr
06.12.2017
16:18:22

Александр
06.12.2017
16:18:32
сделал демку и получил *json.UnmarshalTypeError ?
а в коде делаю log.Printf("%+T", err) и получаю *errors.errorString
разница только в том что скормил вместо r.Body -> r := bytes.NewReader([]byte(text))

Google

Alexander
06.12.2017
16:20:02

Эрик
06.12.2017
16:20:07
Всем добрый вечер! С какой книги начать изучение языка?

Alexander
06.12.2017
16:20:18
спасибо, сейчас перечитаю, посмотрю что да как

Daniel
06.12.2017
16:20:18
с tour of go

Эрик
06.12.2017
16:21:02
tour.golang.org??

Dmitry
06.12.2017
16:21:34
.

Александр
06.12.2017
16:35:11
о зацените
https://play.golang.org/p/ZPyAiU1fqc
вот на что я и напоролся с этим
если кормить CloserReader вернет одно, если просто реадер - другое

Aleksandr
06.12.2017
16:45:12

Александр
06.12.2017
16:48:10
щаз ищу как его назад сконвертировать в обычный

Vladislav
06.12.2017
17:12:55

Александр
06.12.2017
17:13:38
да мне пофиг, просто не понимаю почему стандартый декод возращает разные типы ошибок
самый запасной вариант, вычитать все в строку просто и скормить
должно сработать
buf, _ := ioutil.ReadAll(r.Body)
err := json.Unmarshal(buf, model)
так нормально
но это костыль, вместо нормального "бесплатного" буфера, мы складываем все в переменную
как бы r.Body скормить так похитрее
чего O_o
перенес в код, а там все равно *errors.errorString