@proGO

Страница 223 из 1674
Zver
22.09.2016
15:26:57
Файл может не записаться? ?

Даже если в процессе записи не было ошибок?

Мерлин
22.09.2016
15:29:47
defer вообще, на сколько целесообразно использовать?
Для перехвата паник, для закрытия файлов и разблокировки мьютексов (если функция быстрая), для бенчей (например можно замерять количество бегущих горутин или среднее время выполнения функции)

Evgenij
22.09.2016
15:59:49
Это на чём?

Google
Zver
22.09.2016
16:00:23
Go

Evgenij
22.09.2016
16:01:00
Понятно, редактор?

Zver
22.09.2016
16:01:15
vscode

Evgenij
22.09.2016
16:02:27
Ок посмотрю)Я liteide юзаю вроде норм пока

Вопрос почему vscode?Windows?

Alexey
22.09.2016
16:04:35
Файл может не записаться? ?
Файл не считается записанным, пока Close() не отработает как надо. Попробуйте Close() не вызывать, и посмотреть, что будет в файле на выходе.

Zver
22.09.2016
16:06:00
liteide в чем-то и не плох, но с отладкой проблемы бывали часто, переставало отлаживать, гита интегрированного не было, истории изменений. С ДОПОЛНЕНИЕМ КАКИ-ТО ПРОБЛЕММЫ БЫВАЛИ.

Alexey
22.09.2016
16:06:57
т.е. вы хотите сказать, что не отработал defer? о_0
defer-то отработает, но Close() может вернуть ошибку, про которую мы ничего не узнаем.

Zver
22.09.2016
16:09:11
Нормально дебагер работает, если все правильно установить.

Google
Alexey
22.09.2016
16:09:15
Ну так с дефером close должен же вызваться обязательно.
defer-то отработает, но Close() может вернуть ошибку, про которую мы ничего не узнаем.

Vladislav
22.09.2016
16:12:44
я немного в шоке, как можно получить ошибку при закрытии? получается, где-то идет еще запись?

Evgenij
22.09.2016
16:13:13
Maxim
22.09.2016
16:13:59
Что здесь нахер происходит

Zver
22.09.2016
16:14:04
Zver
22.09.2016
16:15:22
?
Спасибо за полезную инфрмацию.

Andrey
22.09.2016
16:15:41
хм, а что тогда делать если Close() вернула ошибку? подождать и попробовать еще раз закрыть?

Evgenij
22.09.2016
16:15:54
Спасибо за полезную инфрмацию.
Покажи для всех - интересно

Alexey
22.09.2016
16:17:48
Покажи для всех - интересно
https://www.reddit.com/r/golang/comments/3735so/do_we_have_to_check_for_errors_when_we_call_close/ - типа того

я немного в шоке, как можно получить ошибку при закрытии? получается, где-то идет еще запись?
Из интернетов From the Linux man pages: Not checking the return value of close() is a common but nevertheless serious programming error. It is quite possible that errors on a previous write() operation are first reported at the final close(). Not checking the return value when closing the file may lead to silent loss of data.

Zver
22.09.2016
16:19:13
а это как?
Как-то примерно так: defer func() { err = output.Close() }()

Alexey
22.09.2016
16:20:10
Вот так первоисточник: man 2 close

Vladislav
22.09.2016
16:20:40
что-то вы меня озадачили, пойду познавать сей момент

Evgenij
22.09.2016
16:21:12
Zver
22.09.2016
16:23:52
Это реально кложура?
Ну если я в понятих не путаюсь. А то у меня обычно каша в голове. ) Просто закрытие оборачивается в функцию с обработкой и все.

Vladislav
22.09.2016
16:25:20
я просто не пойму, а в какой момент тогда сработает defer?

если это обернуто

Zver
22.09.2016
16:25:40
Так же и сработает.

Google
Evgenij
22.09.2016
16:25:52
Ну если я в понятих не путаюсь. А то у меня обычно каша в голове. ) Просто закрытие оборачивается в функцию с обработкой и все.
у меня тоже каша в голове)))Бывает - но замыкание это типа капкан заряженный костантами - кидаешь на вход число - и получаешь резальт)))

Zver
22.09.2016
16:27:25
Только по деферу вместо прямого вызова close, будет вызвана фукция, которая обработает возврат close.

Vladislav
22.09.2016
16:28:02
у меня наверно каша в голове, объясните вкратце, как работает defer и в какой момент он вызывается?

Zver
22.09.2016
16:28:21
В конце функции.

Zver
22.09.2016
16:28:47
В порядке LIFO

Vladislav
22.09.2016
16:29:05
В конце функции.
по FILO, правильно?

или lifo

jr

ок

Zver
22.09.2016
16:30:01
Last input first output.

Evgenij
22.09.2016
16:30:28
Стэк же

Vladislav
22.09.2016
16:30:46
ну или first in last out ? суть одна

Zver
22.09.2016
16:30:56
Если в функции несколько деферов, то они выполняются в обратном порядке в котором они объявлены.

Zver
22.09.2016
16:32:25
Я кложуру хотел увидеть
func() { err = output.Close() }()

Evgenij
22.09.2016
16:34:02
func() { err = output.Close() }()
Извени - это не анонимная функция?

Anton
22.09.2016
16:34:30
Я кложуру хотел увидеть
Кложура - это функция, которая захватывает локальный контекст

Evgenij
22.09.2016
16:35:16
Кложура - это функция, которая захватывает локальный контекст
А что ты имеешь в виду локальный контекст?

Google
Zver
22.09.2016
16:35:44
Наружнее окружение.

Anton
22.09.2016
16:35:44
А что ты имеешь в виду локальный контекст?
Имел в виду локальный контекст другой функции))

Evgenij
22.09.2016
16:36:48
Кложуре функци нужно на вход чтото - или она может быть без аргументов?

Evgenij
22.09.2016
16:37:44
Это типа - id? Покажи пример - интересно

Anton
22.09.2016
16:38:04
func() { err = output.Close() }() - видишь как она получает доступ к внешней переменной?

Zver
22.09.2016
16:38:32
Даже к двум )

Anton
22.09.2016
16:38:49
Которая при этом является локальной для внешней по отношению к ней функции

Admin
ERROR: S client not available

Anton
22.09.2016
16:39:12
Именно так она и захватывает локальный контекст

Evgenij
22.09.2016
16:39:48
? блин опасно иметь доступ к двум парам без явного доступа - проблемы будут(имхо)

Anton
22.09.2016
16:40:10
То есть локальные переменные функции живы, пока жива кложура)))

Evgenij
22.09.2016
16:40:54
То есть локальные переменные функции живы, пока жива кложура)))
Да согласен - но только на время функции - а тут гаранитрованно время жизни?

Anton
22.09.2016
16:40:55
По крайней мере в языках с таким рантаймом, как в го или питоне

В питоне точно локальный контекст жив, пока кложура жива

Zver
22.09.2016
16:42:22
В гоу тоже.

Anton
22.09.2016
16:42:45
В го, можно отдавать указатель на память созданную локально, так что тоже должна

Evgenij
22.09.2016
16:43:14
Ребята убедили?

Anton
22.09.2016
16:43:24
Там рантайм этим рулит

Evgenij
22.09.2016
16:44:30
Там рантайм этим рулит
Рантайм?Чтото в гошке этого нет вроде?

Google
Zver
22.09.2016
16:44:34
Ребята убедили?
http://4gophers.ru/article/zamykaniya

Evgenij
22.09.2016
16:46:00
Ну я про вирт машин

Zver
22.09.2016
16:46:12
ну если не на ассембле под голое железо писать.

Evgenij
22.09.2016
16:46:49
ну если не на ассембле под голое железо писать.
Несложно там памяти и регистров немного)))

И нет вариантов - это главное?

Да если есть сборка мусора - рантайм есть по определению)

Но ктото пытался гоху запускать на голом железе

Evgenij
22.09.2016
16:57:53
Да вроде мног пипл хохатал - я лично нейтрален

Что сейчас смешно - завтра главная тема

Anton
22.09.2016
17:00:09
Ну питон же запустили, может и го допилят))

Evgenij
22.09.2016
17:01:08
Питон на голом железе - слышал ( скинь ссылку))

Andrey
22.09.2016
17:01:20
никто не трогал такую поделку? https://gohugo.io/

Evgenij
22.09.2016
17:03:38
https://micropython.org
В убунте сидят ребята)))

Ценник невидно для этой красоты(

Anton
22.09.2016
17:06:10
В убунте сидят ребята)))
Он же через ком порт заходит

Evgenij
22.09.2016
17:07:20
Он же через ком порт заходит
Ну ненапрягайся - скрины у них убунтовские)Ценники где?

Страница 223 из 1674