Daniel
но за состоянием кеша следит не llvm, а сам процессор
Vladimir
Я напомню, что для каждой микроархитектуры как минимум у интела желающие могут скачать Intel microarchitecture optimization guide о примерно 120 листах А4, где на примере си рассказано как делать оптимально. И он даже в похожих моделях (Sandy bridge и ivy bridge) очень разный
Daniel
там написано "не очень важно". и, по результатам исследований, это так и есть.
Alexey
Я не соглашусь, что оптимизатора нет. SSA-бэкенд вполне оптимизирует, и развивать его понятно как.
Alexey
Вот, кстати, про сравнение gccgo и gc: https://habrahabr.ru/company/intel/blog/348230/
Daniel
там написано "считай, что нет". циклы не разворачивает, инлайнит с жестокими ограничениями
Alexey
Escape analysis, который есть gc, и которого нет в gccgo, весьма важен для оптимизации
Alexey
Про mid-stack inlining подняли вопрос для Go 1.11, btw
Daniel
это хорошо, да
Alexey
https://github.com/golang/go/issues/19348
Daniel
не, все шевелится, и шевелится хорошо.
Roman
Как работает type assertion ? через рефлект ? Интересно почему число 1 не получается конвернуть в int через .(int) , go говорит что это float64
Alexey
Нет, не через reflect. Если это float64, то это float64 🙂
Alexey
Если 1 приходит из json, то все числа в json по-умолчанию float64
Sergei
Народ, помогите с таким вопросом Есть структура, где есть поле содержащее time.Time{} например такая, type A struct { name string address string phone string ... time time.Time{} } Если я при инициализации струтуры передать полю time нулевое значение, например так Вариант 1 example := A{ name: "test" address: "Test" phone: "+123" ... time: time.Unix(time.Time{}.Unix(), 0), //просто пример нулевого времени } То при записи в Postgres через gorm будет записано нулево значение для времени 1970-01-01 00:00:00.000000 +00:00 , а что еще хуже, будет перезаписано то значение которое там было раньше Но если при заполнении структуры вообще не трогать это поле, например так Вариант 2 example:=A{ name: "test", address: "Test" phone: "+123" ... } То при записи в постгрес через gorm поле времени вообще не будет затронуто и останется <null>, а если поле было заполненно ранее, то ничего не изменится Я со своей стороны не могу повлиять на эту структуру (example) и не заполнять её. Работаю с тем, что есть Есть вариант пересобирать структуру, типа result := A{ Name: example.Name Address: example.Address Phone: example.Phone ... } Но это приведет к перерасходу памяти Я не могу найти способ удалить полностью поле time если поле нулевое, как будто оно не было указано ранее (как в варианте два)
Alexey
type A struct { time *time.Time }
Alexey
(это просто догадка)
Sergei
Ща попробую
Artem
https://github.com/golang/go/issues/19348
а есть вообще место где можно из местной аудитории организовать circle jerk и накрутить лайки на пропозал ? :)
Alexey
А, теперь понятно, спасибо
Есть ещё такое: https://golang.org/pkg/encoding/json/#Decoder.UseNumber https://golang.org/pkg/encoding/json/#Number
Alexey
Вежливость и скромность – немного разные вещи. По теме – кидай ссылку на proposal, тут людей много, но не уверен что все будут бездумно ставить 👍
Sergei
Sergei
а нет, поборол, чуток тоже кривовато, но работает
Sergei
через ссылку, да
Александр
Всем день добрый, работал ли кто над распознанием текста на изображении, может кто то видел га гитхабе что то подобное?
Dmitry
Adobe работал)
Александр
я имел в виду на go
Александр
большое спасибо!!!
Roman
Как конвертировать []byte / map[string]interface{} к json.RawMessage ?
Aleksandr
json.RawMessage(bytes) попробуй так
Aleksandr
оно вроде и есть []byte
Roman
оно вроде и есть []byte
Да, это алиас Получилось, спасибо
Roman
Между type(another type) и anotherType.(type) есть разница ?
Aleksandr
второе это кастинг интерфейса к типу
Artem
интересные штуки подъехали, если кто пропустил. http://blog.kubernetes.io/2018/03/apache-spark-23-with-native-kubernetes.html https://github.com/apache/beam/tree/master/sdks/go (тут в readme есть ссылка на интересную бумажку initial design)
Alexey
Привет, две отличные новости перед длинными выходными! 1. Программа конференции на сайте, смотреть тут: https://www.gophercon-russia.ru/#rec46819495 2. Сегодня у нас появился партнер афтепати, а это значит что безлимитным пивом каждого гофера угощает Sirena-Travel, компания специализирующаяся на travel-системах, которая стартует разработку своего нового продукта на Go.
Anonymous
Настало время вакансий!
Nastya
@NXShock рановато еще для вакансий)
Alexander
Настало время вакансий!
нет бы с праздником поздравить.
Anonymous
нет бы с праздником поздравить.
Программисты - точные ребята. Поздравлять будем завтра.
Alexei
праздник завтра )
Alexander
ну значит поздравление надо было во Future обернуть
Anonymous
ну значит поздравление надо было во Future обернуть
Сори, я только учусь, поэтому у меня go func time.Sleep(time.Day) fmt.Println("С 8 марта!")
Sergey
Всем привет! Не могу понять почему multipart.File нельзя передать в метод с параметром io.Reader. multipart.File вроде как реализует io.Reader так в чем же проблема? type File interface { io.Reader io.ReaderAt io.Seeker io.Closer }
Aleksandr
текст ошибки не скажешь?
Vladislav
Всем привет! Не могу понять почему multipart.File нельзя передать в метод с параметром io.Reader. multipart.File вроде как реализует io.Reader так в чем же проблема? type File interface { io.Reader io.ReaderAt io.Seeker io.Closer }
Обычно компилятор выдает сообщение, когда что-то не так, а не просто "нельзя". Если его приложить помочь будет проще.
Sergey
Обычно компилятор выдает сообщение, когда что-то не так, а не просто "нельзя". Если его приложить помочь будет проще.
./main.go:36:34: cannot use &f (type *multipart.File) as type *io.Reader in argument to zipper.AddFile: *io.Reader is pointer to interface, not interface
Aleksandr
&f (type *multipart.File)
Aleksandr
по-моему ты функцию передаешь?
Aleksandr
код покажи
Vladislav
А какой вообще смысл передавать интерфейсы через указатель?
Sergey
А какой вообще смысл передавать интерфейсы через указатель?
А как правильно сделать? я просто не так довно юзаю go
Aleksandr
код покажи
Vladislav
Ну достаточно просто как аргумент использовать интерфейс, а не указатель на него.
Aleksandr
указатель на интерфейс насколько я помню вообще сделать нельзя
Sergey
Ну достаточно просто как аргумент использовать интерфейс, а не указатель на него.
Значит функции у которой ест аргумент с интерфейсом все равно что я передаю в нее указатель или значение?
Vladislav
указатель на интерфейс насколько я помню вообще сделать нельзя
Не знаю это ли вы имели в виду. Но вот такая конструкция работает. https://play.golang.org/p/h3l5noHJjHf
Artem
Сори, я только учусь, поэтому у меня go func time.Sleep(time.Day) fmt.Println("С 8 марта!")
спать целый день это как то не по Гошному. :) var future func(string) <-chan interface{} greet := future("compliment") if _, _, day := time.Now().Date(); day == 8 { body := <-greet }
Alexander
Сори, я только учусь, поэтому у меня go func time.Sleep(time.Day) fmt.Println("С 8 марта!")
Самое смешное то, что в отличие от обычных однопоточных языков, это решение в Go вполне рабочее. Да, можно его назвать неоптимальным и кривым, но оно делает именно то, что нужно. Благодаря слову go перед функцией.
Artem
Самое смешное то, что в отличие от обычных однопоточных языков, это решение в Go вполне рабочее. Да, можно его назвать неоптимальным и кривым, но оно делает именно то, что нужно. Благодаря слову go перед функцией.
вот да это очень крутая возможность, но мне очень не нравится ее неявное поведение. Слишком просто кажется со стороны и в итоге мы имеем кучу высказываний в стиле - Go простой и выучить его можно за 3 дня.. вот только эти две буквы открывают дверь в мир параллельных вычислений со всякими dead / live lock, starvation и все такое, где мягко говоря не все так просто :)
Quet
3 дня? что-то долго
Quet
а с параллельными вычислениями на любом языке не все так просто
Anonymous
Для консольной проги лучше команды или флаги?
Vitalii
Привет, а почему в golang не сделали явную реализацию интерфейса?
Илья
что это значит?
Anonymous
А так да, нужен переводчик ))
Vitalii
Ну то есть сейчас в golang duck typing по отношению к интерфейсу
Alexander
что это значит?
<Some Class> implemnents <Some Interface>