Daniel
но за состоянием кеша следит не llvm, а сам процессор
Vladimir
Я напомню, что для каждой микроархитектуры как минимум у интела желающие могут скачать Intel microarchitecture optimization guide о примерно 120 листах А4, где на примере си рассказано как делать оптимально. И он даже в похожих моделях (Sandy bridge и ivy bridge) очень разный
Vladimir
Daniel
там написано "не очень важно". и, по результатам исследований, это так и есть.
Alexey
Я не соглашусь, что оптимизатора нет. SSA-бэкенд вполне оптимизирует, и развивать его понятно как.
Alexey
Вот, кстати, про сравнение gccgo и gc: https://habrahabr.ru/company/intel/blog/348230/
Anonymous
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 если поле нулевое, как будто оно не было указано ранее (как в варианте два)
Roman
Alexey
type A struct {
time *time.Time
}
Alexey
(это просто догадка)
Sergei
Ща попробую
Alexey
А, теперь понятно, спасибо
Есть ещё такое:
https://golang.org/pkg/encoding/json/#Decoder.UseNumber
https://golang.org/pkg/encoding/json/#Number
Alexey
Artem
Alexey
Вежливость и скромность – немного разные вещи. По теме – кидай ссылку на proposal, тут людей много, но не уверен что все будут бездумно ставить 👍
Sergei
Sergei
а нет, поборол, чуток тоже кривовато, но работает
Sergei
через ссылку, да
Александр
Всем день добрый, работал ли кто над распознанием текста на изображении, может кто то видел га гитхабе что то подобное?
Dmitry
Adobe работал)
Александр
я имел в виду на go
Slach
Александр
большое спасибо!!!
Roman
Как конвертировать []byte / map[string]interface{} к json.RawMessage ?
Aleksandr
json.RawMessage(bytes) попробуй так
Aleksandr
оно вроде и есть []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 рановато еще для вакансий)
Alexei
праздник завтра )
Alexander
ну значит поздравление надо было во Future обернуть
Sergey
Всем привет!
Не могу понять почему multipart.File нельзя передать в метод с параметром io.Reader.
multipart.File вроде как реализует io.Reader так в чем же проблема?
type File interface {
io.Reader
io.ReaderAt
io.Seeker
io.Closer
}
Aleksandr
текст ошибки не скажешь?
Vladislav
Aleksandr
&f (type *multipart.File)
Aleksandr
по-моему ты функцию передаешь?
Aleksandr
код покажи
Vladislav
А какой вообще смысл передавать интерфейсы через указатель?
Sergey
Aleksandr
код покажи
Vladislav
Ну достаточно просто как аргумент использовать интерфейс, а не указатель на него.
Aleksandr
указатель на интерфейс насколько я помню вообще сделать нельзя
Sergey
Vladislav
Daniel
Aleksandr
Quet
3 дня? что-то долго
Quet
а с параллельными вычислениями на любом языке не все так просто
Anonymous
Для консольной проги лучше команды или флаги?
Stanislav
Vitalii
Привет, а почему в golang не сделали явную реализацию интерфейса?
Илья
что это значит?
Anonymous
Anonymous
А так да, нужен переводчик ))
Vitalii
Ну то есть сейчас в golang duck typing по отношению к интерфейсу
Alexander
что это значит?
<Some Class> implemnents <Some Interface>