입출력 표준 라이브러리는 io에 들어있다
fmt.Fprintln, fmt.Fprintf, fmt.Fscanf같은 "fmt패키지의 F로 시작하는 함수들"은
io.Reader/io.Writer를 인자로 받는다.
io.Reader/io.Writer를 받으면 표준입출력, 파일, 네트워크에 모두 적용 가능하므로 좋다.
f, err := os.Open(filename)
if err != nil {
return err
}
defer f.Close()
var num int
if _, err := fmt.Fscanf(f, "%d\n", &num); err == nil {
}
f, err := os.Create(filename)
if err != nil {
return err
}
defer f.Close()
var num int
if _, err := fmt.Fprintf(f, "%d\n", num); err == nil {
return err
}
먼저, 문자열 슬라이스를 라인별로 출력하는 함수
func WriteTo(w io.Writer, lines []string) error {
for _, line := range lines {
if _, err := fmt.Fprintln(w, line); err != nil {
return err
}
}
}
읽기 함수
func ReadFrom(r io.Reader, lines *[]string) error {
scanner := bufio.NewScanner(r)
for scanner.Scan() {
*lines = append(*lines, scanner.Text())
}
if err := scanner.Err(); err != nil {
return err
}
return nil
}