io (Reader & Wirter)

783 단어
https://www.flysnow.org/2017/05/08/go-in-action-go-reader-writer.html
고도의 추상적인 인터페이스로 인터페이스 프로그래밍을 이해한다.핵심은 인터페이스 프로그래밍...
아래는ioutil을 볼 수 있습니다.ReadAll 방법의 실현
func readAll(r io.Reader, capacity int64) (b []byte, err error) {
    buf := bytes.NewBuffer(make([]byte, 0, capacity))
    // If the buffer overflows, we will get bytes.ErrTooLarge.
    // Return that as an error. Any other panic remains.
    defer func() {
        e := recover()
        if e == nil {
            return
        }
        if panicErr, ok := e.(error); ok && panicErr == bytes.ErrTooLarge {
            err = panicErr
        } else {
            panic(e)
        }
    }()
    _, err = buf.ReadFrom(r)
    return buf.Bytes(), err
}

인터페이스 프로그래밍의 뜻을 조금 이해했는데...

좋은 웹페이지 즐겨찾기