0 / 0 / 0
Регистрация: 07.10.2015
Сообщений: 3
|
||||||
1 | ||||||
Перевод строки в двумерный срез07.10.2015, 14:54. Показов 6349. Ответов 10
Метки нет (Все метки)
Добрый день.
Задача кода в том чтобы строку перевести в двумерный срез по словам и по символам новой строки. Строка: 111 222 333 444 \n555 666 777 \n888 999 Ожидаемый результат: [[111 222 333 444][555 666 777][888 999]] Результат работы программы: [[888 999 777 444][888 999 777][888 999]] Часть кода программы отвечающая за данную манипуляцию:
В чем ошибка если она имеется и почему такой странный результат?
0
|
07.10.2015, 14:54 | |
Ответы с готовыми решениями:
10
Переписать двумерный массив в одномерный, заменяя перевод строки на пробел Заменить в строке все пробелы на перевод строки, а перевод строки изменить на два перевода Разбиение строки на части, перевод строки в число и перевод числа Перевод одномерного массива в двумерный |
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
|
||||||
07.10.2015, 15:07 | 2 | |||||
Код форматируйте тегами и оставляйте ссылку на http://play.golang.org/
Почему вы не хотите сделать так?
0
|
0 / 0 / 0
Регистрация: 07.10.2015
Сообщений: 3
|
|
07.10.2015, 16:24 [ТС] | 3 |
Хотелось бы реализовать данный код без задействования библиотек.
Не могу понять почему в моем варианте кода обрабатывается ни так как подразумивается.
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
|
||||||
07.10.2015, 20:45 | 4 | |||||
ссылочные типы. С ними нужно быть очень внимательными.
Изменил ваш код:
0
|
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,585
|
||||||
07.10.2015, 21:37 | 5 | |||||
Что за ад? =)
И вообще
0
|
0 / 0 / 0
Регистрация: 07.10.2015
Сообщений: 3
|
|
08.10.2015, 11:11 [ТС] | 6 |
Спасибо большое. Так все работает как предполагалось. Осознал свою ошибку работы со срезом stringSlice.
Обязательно изучу, возможно мне больше подойдет ваша реализация кода. Видео интересно, по нему нашел много полезной информации. Спасибо за помощь!
0
|
24 / 7 / 0
Регистрация: 08.10.2015
Сообщений: 36
|
|
08.10.2015, 12:49 | 7 |
Вам привели плохой пример. Пример Se_l лучше, чем пример Kovrin.
А реализацию функции Split можно посмотреть в исходниках самого Go. Они же открыты!!! Для Вас открыты!!!
0
|
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,585
|
|
08.10.2015, 21:54 | 8 |
0
|
24 / 7 / 0
Регистрация: 08.10.2015
Сообщений: 36
|
|
09.10.2015, 11:49 | 9 |
В вашем примере совершенно лишнее усложнение. addword := func(end int) - предположу, что ваш background это JavaScript.
В реальной жизни программисту приходится много бороться с реальными проблемами, возникающими для решения задач в конкретной предметной области. И все это в условиях жестких сроков и жестких требований к качеству. Зачем усложнять себе жизнь самовыдуманными проблемами? Оно не нужно. Человек, очевидно, учится. Учиться нужно правильному. Не следует писать самому то, что уже написано до вас. А если уж хочется изучать такие вещи - то имеет смысл читать стандартную библиотеку. Её реализовывали намного более сильные программисты, чем вы или я или автор вопроса. Там есть чему поучиться. И, что очень важно, стандартная библиотека написана с учетом правильного программирования именно в Go-стиле, а не в стиле Java, Python, JavaScript. Особенно рекомендую см. начиная с Go 1.5 - в ней существенные куски кода переписали на Go (в 1.4 было еще много Сишного кода). Переходящие с других языков пытаются применить свой прежний опыт и обламываются. К пример, "как так - нет generics", "как так - нет исключений". Поэтому изучение сильных программ на Go - это полезно. P.S.: Для тренировки мозгов полезен Haskell.
0
|
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,585
|
|
09.10.2015, 22:36 | 10 |
В чём тут сложность? Обычное оформление повторяющихся действий в отдельную процедуру. Предпочитаешь копипаст-программирование?
Ошибочное предположение. В моём коде нет никаких проблем. Это ты его преподавателю расскажи, чтоб такие задания не давал. А от копипаста кода из стандартной библиотеки он ничему, кроме копирования, не научится. Имеет смысл читать теорию алгоритмов. Стандартную библиотеку боготворить не нужно, в ней могут быть ошибки, как и в любом другом софте. Это не защищает их от ошибок. Для начала пусть освоит банальные вещи. Если бы он был готов к изучению исходников стандартной библиотеки, он бы так и сделал, а не создавал эту тему. Замыкания описаны в спецификации языка. Вот Роб Пайк использует замыкание (с 15:10 примерно), которое захватывает переменную-канал из окружения: Кликните здесь для просмотра всего текста
Стандартная библиотека --- это набор старых, довольно банальных алгоритмов. Пусть уж лучше исходники Docker'а почитает в таком случае. Очень странное заявление после: В Хаскелле замыкания сплошь и рядом.
0
|
0 / 0 / 0
Регистрация: 14.09.2015
Сообщений: 7
|
|
18.10.2015, 19:08 | 11 |
Что-то Cow не комментирует долго. Присоединюсь к вашей дискуссии, так как мой опыт позволяет мне легко понять его доводы и понять то, что он пишет между строк.
1. Да, korvin, ваш код усложнен. С целью продемонстрировать свою крутизну? Получилось наоборот. Если вы не можете написать простой код для решения простой задачи, то вы не более чем начинающий программер. Личинка программера. Когда вы закончите учебу и от теоретического программирования перейдете к настоящей работе (или даже когда из начинающего программиста, станете senior - это происходит к 5-7 году), Вы легко поймете, что именно имел ввиду Cow. Возможно, вы это поймете раньше. А в коде korvin проблема самолюбования - код написанный ради самого кода. Нет достаточно сложной задачи - давайте придумаем ее сами. Это глупо. Программист, решающий реальные задачи и так находится в постоянном цейтноте. Когда ты учишься не нужно учиться усложнять код. 2. "Это ты его преподавателю расскажи, чтоб такие задания не давал. А от копипаста кода из стандартной библиотеки он ничему, кроме копирования, не научится." - а у тебя мания величия? Ты пишешь круче, чем авторы стандартной библиотеки? У тебя можно поучиться, а у них нет? Ха-ха. Думаю, что авторы Go не зря получают в разы больше денег, чем ты сможешь заработать за ближайшие лет 5. 3. Пайк показывает универсальные паттерны. В реальном проекте там много кода можно написать. Здесь же у нас простая задача. Твой ответ слишком сложен для такой задачи. 4. "Стандартная библиотека --- это набор старых, довольно банальных алгоритмов.". Ты еще не программист, если не понимаешь в чем сила именно простых алгоритмов. Что до старости. Большая часть конструкций в современных языках программирования придумана до нашего с тобой рождения. 5. Haskell хорош мозги ломать да. А на Go нужно писать просто и чисто и понятно. Представь, что тебя взяли работать в команду. Ни у кого не будет желания разгребать, мягко говоря, программные кал за другими. Добавлено через 9 минут korvin - программисты, которые пишут серьезные программные продукты, работают в командах, в больших командах. Если твой код требует слишком много времени на его чтение коллегами по команде, то это не они дураки. Возможно, у Земли есть пуп, но это не ты - программы должны легко читаться, уж в Go все для этого сделали, но находятся такие умники как ты, которые считают что простота - это плохо, что это символ непрофессионализма. В этом ты не прав.
0
|
18.10.2015, 19:08 | |
18.10.2015, 19:08 | |
Помогаю со студенческими работами здесь
11
Перевод одномерного массива в двумерный Перевод из статического массива в динамический. (двумерный) Перевод файла .dat в двумерный массив Срез Заполните двумерный массив рандомными числами от 10 до 100 посчитать сумму элементов каждой строки и номер строки,в кото Строки. Множества. Выполнить перевод символов строки из верхнего регистра в нижний и наоборот Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |