golang이 블록을 읽을까요?

(*-*)浩
풀어 주다: 2019-12-17 10:34:25
원래의
4581명이 탐색했습니다.

golang이 블록을 읽을까요?

Go 언어의 Reader 인터페이스는 읽기 작업을 정의하며, Reader 인터페이스를 구현한 인터페이스에는 읽기 기능이 있습니다.                 (권장 학습: go)

인터페이스의 정의는 다음과 같습니다.

type Reader interface {
        Read(p []byte) (n int, err error)
}
로그인 후 복사

A 읽기 호출은 최대 len(p) 바이트의 데이터를 버퍼 p로 읽을 수 있습니다.

n은 실제 이번에는 바이트 수만큼 읽습니다. (0 <= n <= len(p))

err은 이 읽기 작업의 오류 보고서를 나타냅니다(있는 경우, 그렇지 않은 경우에는 nil입니다)

bytes read 숫자 n은 len(p)보다 작습니다. 함수 호출 중에 호출 본문은 p의 모든 공간을 사용할 수 있습니다. (이 설명이 무엇을 표현하려는지 모르겠습니다.)

데이터를 읽을 때, len(p)가 충분하지 않더라도(IO 캐시에 데이터가 없는 경우) 읽기 작업은 일반적으로 IO 캐시에 더 많은 데이터가 도착할 때까지 계속 기다리지 않고 가져온 데이터를 직접 반환합니다

읽기 작업에서 오류가 발생하거나 파일 끝이 발생하면 읽은 데이터의 n바이트를 반환하고 err 반환에는 두 가지 작업이 있을 수 있습니다.

이 읽기 작업에서는 n(>0) 및 err (nil이 아님)이 반환됩니다. )

또는 이 읽기 작업은 n(>0)과 nil을 반환하고 다음 호출은 0과 err(non-nil)을 반환합니다

두 작업이 모두 가능하므로 호출자는 항상 err이 nil

인지 먼저 결정하는 대신, 먼저 n>0을 따라 반환된 데이터가 있는지 확인합니다. 예를 들어 특정 호출이 파일 끝에 도달하고 n바이트의 데이터를 읽을 때 Reader의 구현은 다음과 같습니다. 두 가지 방법:

현재 호출은 n과 EOF 오류를 반환합니다.

현재 호출은 n과 nil을 반환하고, 다음 호출은 0과 EOF를 반환합니다.

Read 구현은 0과 nil을 반환해서는 안 됩니다. 즉, 0일 때 nil이 아닌 오류가 반환되어야 하며, 버퍼 공간의 크기가 0이 아닌 경우 호출자는 0과 nil의 반환 값 조합을 무시하고 아무 일도 일어나지 않은 것처럼 처리해야 합니다. 특히 이 반환이 강조됩니다. EOF를 나타내지 않습니다

위 내용은 golang이 블록을 읽을까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿