0Pricing
Go Academy · 강의

io 유틸리티 함수

Copy, TeeReader, MultiWriter

io 유틸리티 함수은(는) CoddyKit의 무료 Go Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Go Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

io 도구 상자

io 패키지는 읽기 도구와 쓰기 도구를 결합하는 작고 강력한 도우미를 제공합니다. Copy, TeeReader, MultiWriter 등이 있습니다.

io.Copy

io.Copy(dst, src)는 읽기 도구에서 쓰기 도구로 모든 바이트를 스트리밍하고 개수를 반환합니다.

package main

import (
	"fmt"
	"io"
	"os"
	"strings"
)

func main() {
	n, _ := io.Copy(os.Stdout, strings.NewReader("copied\n"))
	fmt.Println("bytes:", n)
}

io.CopyN

io.CopyN(dst, src, n)은 정확히 n바이트를 복사하므로 길이를 알고 있는 접두부를 읽을 때 유용합니다.

package main

import (
	"io"
	"os"
	"strings"
)

func main() {
	io.CopyN(os.Stdout, strings.NewReader("abcdef"), 3)
	os.Stdout.WriteString("\n")
}

io.MultiWriter

io.MultiWriter는 한 번의 쓰기를 여러 쓰기 도구에 동시에 분배합니다. 유닉스의 tee 명령과 비슷합니다.

package main

import (
	"bytes"
	"fmt"
	"io"
	"os"
)

func main() {
	var buf bytes.Buffer
	w := io.MultiWriter(os.Stdout, &buf)
	io.WriteString(w, "to both\n")
	fmt.Println("buffer copy:", buf.String())
}

io.TeeReader

io.TeeReader(r, w)는 읽는 모든 내용을 w에 복사하는 읽기 도구를 반환하므로, 데이터가 흐르는 동안 로깅하거나 해시를 계산하는 데 적합합니다.

package main

import (
	"bytes"
	"fmt"
	"io"
	"strings"
)

func main() {
	var spy bytes.Buffer
	tee := io.TeeReader(strings.NewReader("stream"), &spy)
	io.ReadAll(tee)
	fmt.Println("observed:", spy.String())
}

io.MultiReader

io.MultiReader는 여러 읽기 도구를 하나의 연속된 스트림으로 연결합니다.

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	r := io.MultiReader(strings.NewReader("Hello, "), strings.NewReader("World"))
	data, _ := io.ReadAll(r)
	fmt.Println(string(data))
}

io.Discard

io.Discard는 모든 내용을 버리는 쓰기 도구로, 필요하지 않은 읽기 도구의 내용을 소진할 때 유용합니다.

package main

import (
	"fmt"
	"io"
	"strings"
)

func main() {
	n, _ := io.Copy(io.Discard, strings.NewReader("ignored"))
	fmt.Println("discarded:", n, "bytes")
}

TeeReader로 해시 계산하기

대표적인 조합은 다음과 같습니다. 스트림을 본래 목적에 맞게 읽는 동시에 TeeReader로 같은 바이트를 해시에 전달하면, 한 번의 순회로 검사값을 계산할 수 있습니다.

io.Pipe

io.Pipe는 메모리에서 쓰기 도구와 읽기 도구를 연결합니다. 흔히 고루틴 사이에서 스트리밍 생산자/소비자 패턴을 구현할 때 사용합니다.

알맞은 도우미 선택하기

  • 데이터 이동: Copy / CopyN
  • 출력 복제: MultiWriter
  • 입력 관찰: TeeReader
  • 입력 결합: MultiReader
  • 입력 소진: Discard

조합 가능성

이 도우미들은 모두 io.Reader/io.Writer를 사용하므로 서로 자유롭게 중첩하고 연결하여 작은 구성 요소만으로 정교한 처리 흐름을 만들 수 있습니다.

빠른 확인

io 유틸리티에 대한 지식을 확인해 보십시오.

복습

io 유틸리티 도우미를 배웠습니다.

  • Copy / CopyN은 데이터를 스트리밍합니다.
  • MultiWriter는 출력을 복제합니다.
  • TeeReader는 입력을 관찰합니다.
  • MultiReader는 입력을 결합하고, Discard는 입력을 소진합니다.
  • 모두 읽기/쓰기 인터페이스를 통해 조합할 수 있습니다.

자주 묻는 질문

“io 유틸리티 함수” 강의는 무료인가요?

네 — “io 유틸리티 함수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Go Academy 강의 전체를 잠금 해제할 수 있습니다. Go Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“io 유틸리티 함수”에서 뭘 배우나요?

Copy, TeeReader, MultiWriter 브라우저에서 직접 실행하는 실습 코드로 Go Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Go Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Go Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“io 유틸리티 함수” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Go Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Go Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Reader 인터페이스
  2. Writer 인터페이스
  3. io 유틸리티 함수
  4. 사용자 지정 Reader 구현하기
← Go Academy(으)로 돌아가기