> 백엔드 개발 > Golang > Go 함수 이름 앞의 괄호의 목적은 무엇입니까?

Go 함수 이름 앞의 괄호의 목적은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-29 08:29:09
원래의
942명이 탐색했습니다.

What's the Purpose of Parentheses Before a Go Function Name?

Go의 함수 선언 구문: 괄호 풀기

Go 코드 내에서 함수 이름 앞에 괄호로 묶인 요소가 포함된 함수 선언을 만날 수 있습니다. . 이러한 괄호는 함수 동작을 정의하는 데 있어 특정한 역할을 합니다.

수신자: 소개

괄호 안의 요소는 함수의 수신자를 나타냅니다. 수신자는 메소드가 호출되는 유형입니다. 어떤 의미에서는 객체 지향 프로그래밍의 클래스 역할을 하며 메서드가 작동하는 엔터티를 나타냅니다.

값 및 포인터 수신기

수신자는 다음 중 하나를 수행할 수 있습니다. 값 유형이거나 포인터 유형이어야 합니다. 값 수신자는 값으로 전달됩니다. 즉, 함수 내에서 수신자에 대한 변경 사항이 호출 범위에 반영되지 않습니다. 반면 포인터 수신기는 참조로 전달되므로 함수가 반환된 후에도 함수 내에서 수정된 내용이 유지됩니다.

예를 들어 다음 함수에는 수신기 값이 있습니다.

func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    ...
}
로그인 후 복사
로그인 후 복사

ServeHTTP 함수 내에서 핸들러 변수가 수정되면(예: h.Name = "Evan") 함수가 실행되면 변경 사항이 유지되지 않습니다.

반대로 다음 함수에는 포인터 수신기가 있습니다.

func (s *GracefulServer) BlockingClose() bool {
    ...
}
로그인 후 복사

BlockingClose 함수 내 GracefulServer 인스턴스에 대한 수정 사항은 호출 범위에 반영됩니다.

함수 선언 구문 분석

의미를 완전히 이해하려면 수신자가 있는 함수 선언의 경우 수신자 유형과 함수 서명을 모두 고려해야 합니다.

예를 들어 선언은 다음과 같습니다.

func (h handler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    ...
}
로그인 후 복사
로그인 후 복사

ServeHTTP 함수가 다음과 연결되어 있음을 나타냅니다. 핸들러 유형을 지정하고 http.ResponseWriter와 두 개의 인수를 사용합니다. *http.Request.

결론

Go 함수 선언에서 함수 이름 앞에 괄호로 묶인 요소는 메서드가 호출되는 유형인 수신자를 나타냅니다. 수신기는 값 유형 또는 포인터 유형일 수 있으며 둘 중 하나를 선택하는 것은 수신기에 대한 변경 사항이 호출 범위에서 지속되어야 하는지 여부에 따라 달라집니다.

위 내용은 Go 함수 이름 앞의 괄호의 목적은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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