>백엔드 개발 >Golang >golang에서 반환 값이 너무 많은 문제를 처리하는 방법

golang에서 반환 값이 너무 많은 문제를 처리하는 방법

王林
王林원래의
2019-12-24 15:26:052809검색

golang에서 반환 값이 너무 많은 문제를 처리하는 방법

다중 값 반환

Go(컴파일된 언어의 경우)의 매우 특별한 기능은 함수와 메서드가 여러 값을 반환할 수 있다는 것입니다. ​​​​(Python 및 Perl도 이를 수행할 수 있음).

이것은 C 프로그램의 많은 잘못된 규칙을 개선하는 데 사용될 수 있습니다: 오류를 반환하는 방식으로 매개변수를 수정합니다(예: EOF에서 -1). Go에서 Write는 카운트 값과 오류를 반환합니다. "예, 일부 바이트를 썼지만 장치 예외로 인해 모든 바이트가 쓰여지지 않았습니다."

*os 패키지의 File.Write는 다음과 같이 선언됩니다.

func (file *File) Write(b []byte) (n int, err error)

문서에 나와 있듯이 작성된 바이트 수를 반환하고 n != len(b)인 경우 nil이 아닌 오류를 반환합니다. 이는 Go에서 일반적인 접근 방식입니다. 튜플은 기본 유형으로 표시되지 않으므로 여러 반환 값이 최선의 선택일 수 있습니다. 특정 오류 신호로 필드 공간을 오버로드하지 않고도 원하는 값을 정확하게 반환할 수 있습니다.

이름이 지정된 반환 값

Go 함수의 반환 값 또는 결과 매개 변수에 이름을 할당하고 입력 매개 변수처럼 원래 변수처럼 사용할 수 있습니다. 이름이 지정되면 함수 시작 부분에서 해당 유형의 0 값으로 초기화됩니다. 함수가 매개변수를 추가하지 않고 return 문을 실행하면 결과 매개변수가 반환됩니다. 이 기능을 사용하면 더 적은 코드로 더 많은 작업을 수행할 수 있습니다.

이름은 필수는 아니지만 코드를 더욱 강력하고 명확하게 만들 수 있습니다. 여기에 문서가 있습니다. 예를 들어 int 유형의 nextPos 반환 값 이름을 지정하면 어느 것이 무엇을 나타내는지 나타낼 수 있습니다.

func nextInt(b []byte, pos int) (value, nextPos int) { /* ... */ }

명명된 결과는 초기화되고 수정되지 않은 반환과 연결되므로 매우 간단하고 명확할 수 있습니다. 다음은 매우 잘 사용되는 io.ReadFull 코드입니다:

func ReadFull(r Reader, buf []byte) (n int, err error) {
    for len(buf) > 0 && err == nil {
        var nr int
        nr, err = r.Read(buf)
        n += nr
        buf = buf[nr:len(buf)]
    }
    return
}

추천 관련 기사 및 튜토리얼: golang 튜토리얼

위 내용은 golang에서 반환 값이 너무 많은 문제를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.