Size: a a a

2020 April 02

АП

Андрей Привалов in Go-go!
Но не стоит ожидать, что какая-то магия запретит это делать. Вот я о чем
источник

DP

Daniel Podolsky in Go-go!
нет же способа конвенционального изменить слайс. только подменить
источник

RS

Roman Sharkov in Go-go!
Андрей Привалов
Но не стоит ожидать, что какая-то магия запретит это делать. Вот я о чем
AFAIK, стоит ожидать что Read не изменит переданный []byte, а если такое происходит то это обычно баг и об этом оповещают автора Read
источник

АП

Андрей Привалов in Go-go!
Ну да. Кажется, мы об одном и том же. или я не тому человеку ответил)
источник

s

snip in Go-go!
Roman Sharkov
AFAIK, стоит ожидать что Read не изменит переданный []byte, а если такое происходит то это обычно баг и об этом оповещают автора Read
А как же он туда данные запишет?
источник

RS

Roman Sharkov in Go-go!
snip
А как же он туда данные запишет?
если мы хотим записать из входящего слайса в свой - https://golang.org/pkg/builtin/#copy
если имеется ввиду возможно ли изменить входящий слайс то вот доказательство: https://play.golang.org/p/FKjqt3XkADQ

или я неправильно понял вопрос?
источник

RS

Roman Sharkov in Go-go!
вот не хватает read-only гарантий в Go, из-за этого и такие недопонимания 😕
источник

АП

Андрей Привалов in Go-go!
Тут зависит про какую сторону мы говорим, функция принимающая io.Reader действиельно ничего не запишет, она же может толко метод Read вызвать
источник

s

snip in Go-go!
Ридер пишет в переданный ему буфер
источник

s

snip in Go-go!
Буфер при этом изменяется
источник

s

snip in Go-go!
Причем здесь ридонли гарантии и прочее я вот пока не понял
источник

s

snip in Go-go!
Возможно я не весь тред прочитал
источник

RS

Roman Sharkov in Go-go!
Андрей Привалов
Тут зависит про какую сторону мы говорим, функция принимающая io.Reader действиельно ничего не запишет, она же может толко метод Read вызвать
> Почему Reader изменяет передаваемый параметром массив byte хотя мы передаем не ссылку а сам экземпляр, и функция по идее должна с копией работать и не менять оригинал?

тут человек скорее всего имел ввиду мутацию слайса, который передаётся параметром в io.Reader.Read и такого происходить не должно по конвенции
источник

RS

Roman Sharkov in Go-go!
snip
Причем здесь ридонли гарантии и прочее я вот пока не понял
мы про слайс, который параметром передаётся в Read 🙃
источник

s

snip in Go-go!
И да массив на который указывает слайс изменится все верно
источник

RS

Roman Sharkov in Go-go!
snip
И да массив на который указывает слайс изменится все верно
мы сейчас про какой слайс?!
источник

s

snip in Go-go!
Про слайс переданный параметром в рид
источник

S

Sergey in Go-go!
Roman Sharkov
> Почему Reader изменяет передаваемый параметром массив byte хотя мы передаем не ссылку а сам экземпляр, и функция по идее должна с копией работать и не менять оригинал?

тут человек скорее всего имел ввиду мутацию слайса, который передаётся параметром в io.Reader.Read и такого происходить не должно по конвенции
Read reads up to len(p) bytes into p
источник

RS

Roman Sharkov in Go-go!
snip
Про слайс переданный параметром в рид
с какой стати он должен изменяться?!
источник

s

snip in Go-go!
Потому что ридер в него должен прочитать
источник