Tyranron тут хитрый момент - если не делать close, то так оно и есть. Главная горутина забирает все значения из канала, и блокируется на чтении из пустого chan. Это легко проверить, если в вышеприведенном мной коде убрать close(a) - и словите deadlock: play.golang.org/p/WRyTy8XjlJ
закрытие же позволяет и дальше читать из канала. Вообще же метод close позволяет сказать читающим горутинам (а из одного канала можно читать сразу нескольким) что больше данных не будет.
Вероятно вас смущает что в канал посылается 10 значений, а читается 15? Правильнее для каналов использовать range (пример play.golang.org/p/NSk9lCOFv5 ), можно даже из нескольких горутин читать через range из одного канала, но на вопрос "есть ли у нас данные еще?" можно ответить только лишь прочитав v, ok из канала
Либо добавьте свой код с указанием мест, где у вас есть затруднения, либо укажите моменты, которые неясно как реализовывать. В такой формулировке это "решите мне задачу".
neolink, любезнейший, вопрос задан про реализацию конкретной задачи (а именно "инициализировать переменную из терминала"), и ее решение на го может быть реализовано "аки в си", через чтение потока ввода, а может через пакет flag. Кошернее использовать решение через пакет, но никто не запрещает использовать поток ввода, ради бога. Если бы была задача - "обрабатывать данные из входного потока" - то у меня вопросов бы не возникло, bufio.NewReader в руки и вперед. К какому месту у Вас, дражайший, есть претензии?
у человека есть задача инициализации переменной из терминала (что я понимаю как параметр командной строки). имея некоторый сишный опыт, efim23 спрашивает про гошные аналоги, приводя пример, как он сделал бы это на C (т.е. через чтение stdin). Go позволяет читать stdin, и даже typecast, но для конкретной проблемы есть стандартный пакет, который сам "заморачивается" с чтением stdin и typecast'ом. в таком виде "критика" принимается, neolink?
Раз мой ответ оказался отмеченным как решение, то стоит еще, на всякий случай, указать, что можно проводить отладку как обычного бинарника, через gdb (или через cgdb)
и получится что проект будет зависеть от стороннего сервиса. Конечно, понимаю, что красивые графики и все такое, но, имхо, лучше потерять день и прикрутить свою статистику
panic я привел здесь просто для примера, когда от ошибки отмахнуться просто так нельзя. Если ошибка recoverable - то либо ставим ее обработку через if err != nil { /*обрабатываем ситуацию*/ }, либо if err != nil { return nil, err /*возвращаем пустой результат, и говорим что на этих входных данных возникла ошибка*/ }, в зависимости от ситуации
нет-нет, я вас понял именно так как вы и объясняли, про защиту от xss и js-бяк =) с ckeditor'ом я знаком - у меня с ним были бодания по поводу сео-заморочек, пришлось писать конфиг с переопределением стандартных названий стилей (h1-6 и т.п.) на сео-нейтральные
struct{}{} места в памяти не занимает, но сама map занимает =) до кучи еще можно упомянуть такую структуру как map[interface{}]struct{}, которая хранит в себе множество любых объектов (play.golang.org/p/KzWRmHagOM)
"(раз так надо)" - ну вы же используете ckeditor, который на выходе и дает html-код с "проблемами". говорил, исходя из той мысли что этот редактор уже встроен в проект, и прикручивать вместо него что-то другое будет не самым лучшим решением. Хотя можно посмотреть на другие wysiwyg-редакторы: tinymce, spaw editor, nic edit, wymeditor, openwysiwyg и т.п.
1) ставите phantom.js
2) пишете js с необходимыми действиями
3) из C++-кода дергаете как вызов внешней программы, по завершению результаты выполнения фантомом вашего js лежат либо в выходном потоке, либо в файле
Пример: надо сделать скрин гитхаба.
1) установили;
2) написали:
var page = require('webpage').create();
page.open('github.com', function() {
page.render('github.png');
phantom.exit();
});
и сохранили как github.js
3) в C++-коде делаете вызов внешней программы, например, system("phantomjs github.js"); и в случае успешного выполнения забираете свой github.png
распознавание контактной инфы - это проблема а) распознавания текста (которую решают всякие abbyy и иже с ними, надо ли с ними тягаться?) б) выделение из распознанного текста контактов - тоже лингвистика рядом не стояла
сравнение тональностей - хорошая идея, одобряю ))