Атрибут \r в конце каждой строки при записи

В txt файле лежат строки в таком формате:

string1
string2
string3

Ну то есть разделенные \n. Я хочу получить массив с этими строками. Написал такой код, который должен получить данные в массив data и потом добавлять в массив session.Data если такого элемента еще нет, но он как то странно работает.

batch, err := os.ReadFile("text.txt")
    if err != nil {
        fmt.Println(err)
    }
    data := strings.Split(string(batch), "\n")
    fmt.Println(data)
    for i, v := range data {
        if contains(session.Data, v) {
            fmt.Println("Element already added!")
        } else {
            session.Data = append(session.Data, data[i])
        }
    }

При отработке кода Println(data) выводит мне такое (в структуре в поле session.Data уже есть эти элементы)

 string3]
Element already added!
Element already added!
Element already added!

Почему мне криво отображается полученный массив, но for отработал как надо и сделал 3 итерации

Дальше я всю структуру прогоняю через json.Marshal() и записываю в json файл, туда записываются все 3 элемента, только на конце каждой строки добавляется \r что мешает мне потом нормально читать их в дальнейшем

sessionBytes, _ := json.Marshal(session)
    config, _ := os.OpenFile("config.json", os.O_WRONLY, 0666)
    defer config.Close()
    _, err = config.Write(sessionBytes)
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("Successful update")
    }

Результат в json файле(\r нет только у последнего элемента, не понимаю откуда вообще берется)

{"Data":["string1\r", "string2\r", "string3"]}

Не понимаю почему не могу нормально увидеть полученный массив после чтения файла и почему добавляется \r при записи в json файл


Ответы (1 шт):

Автор решения: Strygwyr

Это перевод каретки. Нужно делать split с разделителем \r\n, тогда и запись и отображение будет верным

→ Ссылка