Denis
item это какой тип?
Yuri
Insert(object ...interface{})
Roman
смотри сюда: mgo/bson/encode.go, функция func (e *encoder) addDoc(v reflect.Value) - дебажь ее со своими данными
Denis
Insert(object ...interface{})
item это функция чтоли? она какого типа вот переменаая item
Roman
да у него там косяк в данных
Roman
надо дебагом идти
Daniel
Человек, по-моему, базовых вещей не знает
Daniel
Дебаг обычно не нужен
Denis
decoder.Decode(&item) вот здесь ты в item из jsonа или чего-то еще десеарилизуешься
Denis
а item это что такое?
Daniel
А нужен здравый смысл
Yuri
item := &object
Yuri
указатель
Denis
хорошо, а object это что?
Yuri
object ...interface{}
Denis
ммм ты меня окончательно запутал
Roman
ну вот он, слайс
Denis
ну да, я и говорю, но откуда и зачем
Yuri
ага.
Roman
передает как параметр
Denis
а все я понял что ты не понимаешь, @Daring_junior
Roman
дурная голова mgo покоя не дает :)))
Denis
смотри в mgo.Insert(docs ..interface{}) это для того
Denis
для того чтобы можно было передать несколько документов и их пачкой сохранить. например mgo.Insert(Item{}, Item{}, Item{})
Denis
тебе не нужно нигде указывать ...interface{}. укажи item свой тип
Roman
надо for _, item:=range object
Игорь Пинчук
А подскажите, пожалуйста - какой сейчас code style наиболее распространенный?
Игорь Пинчук
go fmt ?!
эт то да) но почитать именно)
Yuri
надо for _, item:=range object
через loop сохранять имеете ввиду
Denis
я кажется понял к чему ты ведешь
collection.Insert(item) вот здесь item должен оказаться типом твоей структуры
Ivahaev
эт то да) но почитать именно)
https://golang.org/doc/effective_go.html
Ivahaev
https://github.com/golang/go/wiki/CodeReviewComments Два
Denis
Insert(object...)
не не не, ты не понял, у него документ один, но он пытается его десеарилизовать сначала из JSON и указывает тип переменной ...interface{}
Roman
ой е, так то да, жопа будет
Yuri
да именно так
Roman
а надо просто var object interface{}
Denis
в общем укажи тип переменной для Item тот тип который ты и пытаешься сохранить, как он там у тебя называется
Denis
да, либо так, либо вместо interfcae{} твой тип
Yuri
а если в метод два разных типа могу прийти. тогда если правильно понял: ( t , tt )
Roman
var object interface{}; json.Decode(object); mgo.DB("жопа").Clone().Collection("с_ручкой").Insert(object)
Yuri
ок.
Yuri
спс.
Yuri
Допинаю все что Вы мне сказали.
Yuri
все работает
Yuri
спс
Denis
👍
Yuri
теперь я пошел int{} vs …int{} смотреть
Игорь Пинчук
Вопрос... Статического анализиатора под goland пока не существует?
Cat
Художник
Маjко
Художник
Зачем там факториал я так и не понял
Васильев Виктор
типа statickcheck или в сборке megacheck или еще больше gometalinter но там не только статический но и стилистический и другие
Васильев Виктор
Просто го изначально разработан чтобы давать по рукам так что там много не насобираешь
Tigran
Художник
Это что за статья?
Игорь Пинчук
Просто по факту даже обращение с выходом за предела слайса не детектится
Игорь Пинчук
грустно же
Маjко
Просто го изначально разработан чтобы давать по рукам так что там много не насобираешь
Особенно за разыменование нулла и гонки данных он офигенно по рукам дает, лол
Игорь Пинчук
panic: runtime error: index out of range
Васильев Виктор
Так....это слайс же динамическая штука
Васильев Виктор
туда и докинуть можно
Игорь Пинчук
Согласен. Но простейший статик анализатор может указать по крайне мере ворнингом
Игорь Пинчук
Что может выйти обращение за предел
Васильев Виктор
Он может путем глбокого изучения кода узнать что болше нигде в него не добавляют и тогда проверить границы
Васильев Виктор
но это немного глупо
Cat
Зачем там факториал я так и не понял
Если честно, я даже отформатированный код не понял Вроде бы смысл задачи отличается от написанного
Je
Просто го изначально разработан чтобы давать по рукам так что там много не насобираешь
Совершенно не характеристика компилятора го, он проверяет только типы и больше ничего. Очень просто собрать то, что не будет работать, банально необработка err и null pointer exception
Cat
Это что за статья?
https://m.habr.com/post/354790/
Игорь Пинчук
Нуу... как глупо. Я просто видел похожие проблемы в других языках и оно детектилось) Просто думал есть инструмент и тут.
Васильев Виктор
я сам пользуюсь металинтером