Ответ 1
Вы должны использовать "\n"
.
Разделяя '\n'
, выполняется поиск фактического \
за n
в тексте, а не байта новой строки.
Я пытаюсь выполнить довольно простую задачу разделения строки на новые строки.
Это не работает:
temp := strings.Split(result,`\n`)
Я также попробовал 'вместо `но не повезло.
Любые идеи?
Вы должны использовать "\n"
.
Разделяя '\n'
, выполняется поиск фактического \
за n
в тексте, а не байта новой строки.
Это не работает, потому что вы используете обратные ссылки:
Строковые литералы строки представляют собой последовательности символов между обратными кавычками ``. В кавычках любой символ является законным, за исключением обратной цитаты. Значением строкового литерала является строка, состоящая из неинтерпретированных (неявно UTF-8-кодированных) символов между кавычками; , в частности, обратные косые черты не имеют особого значения, а строка может содержать символы новой строки.
Ссылка: http://golang.org/ref/spec#String_literals
Итак, когда вы делаете
strings.Split(result,`\n`)
вы фактически раскалываете, используя два последовательных символа "\" и "n", а не символ строки "\n". Чтобы сделать то, что вы хотите, просто используйте "\n"
вместо обратных ссылок.
Для тех из нас, кто иногда использует платформу Windows, может помочь не забыть использовать замену перед разделением:
strings.Split(strings.Replace(windows, "\r\n", "\n", -1), "\n")
' не работает, потому что это не строковый тип, а руна.
temp := strings.Split(result,'\n')
компилятор go: cannot use '\u000a' (type rune) as type string in argument to strings.Split
определение: Split(s, sep string) []string