Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- range
- install
- FOR
- 영화
- tcp
- Linux
- C
- http
- write
- 책
- API
- window
- File
- Python
- Callback
- Close
- windows
- Golang
- package
- 리뷰
- JavaScript
- json
- c++
- go언어
- GO 언어
- Sync
- go
- mutex
- bitcoin
- channel
Archives
- Today
- Total
Code Habit
[Go언어] bufio 패키지 본문
bufio 패키지는 buffered I/O를 구현하며 io.Reader, io.Writer 객체를 래핑한다. bufio를 사용하면 버퍼를 활용해 I/O의 부하를 줄일 수 있다.
bufio.NewReader 함수를 이용해 파일이나 표준입력스트림 등에서 defaultBufSize만큼 읽어올 수 있다.
func NewReader(rd io.Reader) *Reader {
return NewReaderSize(rd, defaultBufSize)
}
ex)
func ReadFile(filename string) (string, error) {
file, err := os.Open(filename)
if err != nil {
return "", err
}
defer file.Close()
rd := bufio.NewReader(file)
line, _ := rd.ReadString('\n')
return line, nil
}
func ReadStandardStream()(string, error) {
r := bufio.NewReader(os.Stdin)
s, err := r.ReadString('\n')
return s, err
}
bufio.NewScanner 함수를 이용해 파일이나 표준입력 스트림에서 문자를 읽고 변수에 저장할 수 있다.
// NewScanner returns a new Scanner to read from r.
// The split function defaults to ScanLines.
func NewScanner(r io.Reader) *Scanner {
return &Scanner{
r: r,
split: ScanLines,
maxTokenSize: MaxScanTokenSize,
}
}
ex)
func main() {
sc := bufio.NewScanner(os.Stdin)
sc.Scan() // 스트림에서 한줄 읽어옴
fmt.Println(sc.Text()) // 읽어온 문자열 출력
}
위 내용은 bufio 패키지의 기본기능만 소개한 것이고 다음 사이트에서 더 자세한 함수설명이나 활용을 확인할 수 있다.