Илья
перконовские?
Alexey
Нет, это не мы контрибьютили
Anonymous
https://github.com/go-sql-driver/mysql#load-data-local-infile-support
дык я вроде так и делаю. db, _ = sql.Open("mysql", "root:123@/test") stmtIns, _ = db.Prepare("INSERT t1 (с1, с2, с3, с4, с5) values (?,?,?,?,?) on duplicate key upс1 с4 = с4 + values(с4), с5 = с5 + values(с5);") а потом читаю циклом файл построчно и делаю stmtIns.Exec(c1,c2,c3,c4,c5)
Alexey
Эта ссылка на конкретный раздел LOAD DATA LOCAL INFILE
Alexey
А предыдущая описывает что это
Anonymous
ааа.. вот оно как.. я не то делаю.
Vadim
Я тоже самое сделал после 10 минут в go flood.
Vadim
Там начали говорить про хрыча, а потом начали гробить какого-то человека. Мне не понравилось.
Vadim
Может быть я зашёл не в тот чат.
Petr
Какого? Или тебе Хрыч не понравился? )
Michael
и правда какого лешего об этом тут
Stepan
Можете пожалуйста объяснить разницу между x := structName{} и x := &structName{}
Stepan
Я понимаю что такое указатели и как они работают
Petr
Это в туториале есть
Stepan
Меня интересует в каких случаях может быть нужен 1й вариант
Petr
с примером
Stepan
Почему мы не можем всегда ссылаться на адрес структуры
Stepan
с примером
Я возможно невнимательно смотрел, это в указателях?
Je
Меня интересует в каких случаях может быть нужен 1й вариант
Если это чисто локальные данные внутри одной функции, то указатель не нужен, понятно же. К тому же некоторые сериализаторы не очень воспринимают указатели и не умеют с этим работать, sqlx тоже
Je
стек работает быстрее кучи
Stepan
стек работает быстрее кучи
аааааа, то есть напрямую есть смысл обращаться только в особых случаях?
Stepan
Просто я все пытаюсь в это вникнуть и что-то никак не выходит
Stepan
Смотрю сейчас на курсейре курс и они постоянно указателями обращаются
Je
Что значит напрямую? По значению можно небольшие структуры передавать, это также гарантия, что они не будут изменены
Je
Выделяем память, кладем, сохраняем в переменную указатель, это много сложее и создает нагрузку на GC. Избегай указателей где этого можно
Vadim
Почему мы не можем всегда ссылаться на адрес структуры
Когда ты шлешь в функцию структуру или делаешь метод структуры, если ты сделал первый вариант при вызове метода/функции туда будет копироваться вся структура. А если ты записал в переменную аддрес структуры, в метод/функцию будет слаться этот адрес и после будет происходить взаимодействие с полями исходной структуры.
Je
В го не очень любят shred state и стараются этого избегать где можно, так как это способствует трудноуловимым багам с гонками в условиях конкурентности, которую мы любим
Vadim
С поинтерами сложнее работать gc. Также, зачем хранить ещё адрес структуры, если ты к ней будешь обращаться только локально.
Stepan
type structName struct { Name string ID int }
Je
Я понимаю что такое указатели и как они работают
Мне кажется тебе нужно прочитать еще пару раз для просветления
Vadim
Обращение к структуре без поинтера: 1. Нашел переменную 2. Делаешь грязные дела Обращение к структуре через поинтер: 1.Обратился к переменой, которая хранит адрес. 2. Переходишь по адресу 3. Делаешь грязные дела.
Stepan
type structName struct { Name string ID int }
Что именно я могу здесь изменить, если сошлюсь через поинтер?
Stepan
Просто я хочу на пальцах понять, чтобы быть уверенным
Stepan
Мне кажется тебе нужно прочитать еще пару раз для просветления
А что можешь посоветовать на эту тему почитать?
Stepan
Кроме офф документации
Je
Кроме офф документации
Хз, я начинал с ассемблера, может тебе стоит пройти экскурс ассемблер-Си перед го, тогда ты точно начнешь понимать цену работы с кучей
Vladimir
смотри на примере твоей структуры: если ты передашь структуру как есть в функцию - считай что это будет копия ее
Vladimir
изменишь в рамках функции - ничего не произойдет с основной
Vladimir
если в структуре указатели - то изменится значение и в оригинальной. Если указатель на структуру - также изменится значение в оригинальной
Vladimir
почитай про указатели в учебнике по Си
Vladimir
они точно такие же везде
Vladimir
а в чем вопрос?
Stepan
Вопрос был именно в указательном методе
Stepan
почитай про указатели в учебнике по Си
Ок, тогда к сишным и обращусь наверное)
Vladimir
ну и?
Stepan
Спасибо)
Stepan
ну и?
Да я не могу понять понял я или нет
Vladimir
объясни как понял
Stepan
Сейчас на всякий почитаю еще
Stepan
Ну обращение без указателя - работа с копией на стэке
Stepan
Верно?
Stepan
Это и безопаснее и быстрее как я понимаю
Je
Стек используется для передачи при вызове, далее снимается со стека и работается, не нужно говорить "работа с копией на стеке" - нет там никакой работы
Denis
Это и безопаснее и быстрее как я понимаю
Не быстрее: чтобы создать копию, нужно несколько раз обратиться к памяти
Je
быстрее, если там десяток байт и входит в один регистр
Vadim
Скорость зависит от размера структуры.
Denis
быстрее, если там десяток байт и входит в один регистр
Потому что в го поинтеры в какой-то обертке? А то поинтер-то в худшем случае всего 8 байт
Алексей
быстрее, если там десяток байт и входит в один регистр
десяток байт в один регистр не войдёт
Stepan
Как я понимаю так выгодно работать с небольшим количеством информации, верно?
Stepan
Ладно, пойду читать сишную литературу
Алексей
Вообще по указателю надо передавать только в двух случаях: 1) если надо изменить данные 2) если структура очень большая
Petr
Ладно, пойду читать сишную литературу
Тоже до этого дошел в свое время, когда начал гоу изучать )
Anonymous
Всем привет http.DetectContentType(buffer) для файла формата xlsx - возвращает application/zip как еще можно проверить формат файла?
Aleksandr
так правильно показывает
Anonymous
а как проверить что это именно xlsx ?
Aleksandr
по расширению
Stepan
по расширению
Не только
Stepan
Вроде elf называлась либа, которая тебе нужна