동일한 io.Reader에서 여러 읽기 처리
io.Reader 스트림에서 읽기는 한 번만 수행할 수 있습니다. 순차적 데이터 스트림. 그러나 여러 소스에서 동일한 데이터를 읽어야 하는 시나리오가 있습니다.
이를 달성하는 한 가지 방법은 io.TeeReader를 사용하는 것입니다. 이 함수는 입력 데이터를 복제하는 새로운 io.Reader를 생성하므로 원본 스트림에 대한 별도의 참조를 사용하여 여러 인스턴스를 생성할 수 있습니다.
예:
package main import ( "bytes" "io" "io/ioutil" "log" "strings" ) func main() { r := strings.NewReader("some io.Reader stream to be read\n") var buf bytes.Buffer tee := io.TeeReader(r, &buf) log.Println(ioutil.ReadAll(tee)) log.Println(ioutil.ReadAll(&buf)) }
이 예에서는 ioutil.ReadAll()은 원래 스트림에서 데이터를 읽고 기록하는 tee에서 처음 호출됩니다. 그런 다음 &buf에서 ioutil.ReadAll()이 호출되어 TeeReader의 데이터 복사본을 인쇄합니다.
참고: buf에서 읽기를 시도하기 전에 tee에서 읽는 것이 중요합니다. 그렇지 않으면 버퍼가 비어 있게 됩니다.
위 내용은 Go에서 동일한 io.Reader를 여러 번 읽으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!