>백엔드 개발 >Golang >Go 함수에 본체가 없지만 어떻게 올바르게 작동할 수 있나요?

Go 함수에 본체가 없지만 어떻게 올바르게 작동할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-12-20 05:02:18941검색

How Can a Go Function Lack a Body Yet Still Function Correctly?

Go 어셈블리의 함수 구현

math/floor.go의 소스 코드를 읽으면 다음과 같은 당황스러운 관찰을 접할 수 있습니다.

func Floor(x float64) float64

func floor(x float64) float64 {
    // ...
}

Floor에 대한 함수 정의가 선언되었음에도 불구하고 이에 대한 명확한 함수 본문은 없습니다. 이는 다음과 같은 질문을 제기합니다: Go의 구문에서 "몸 없는" 함수가 허용됩니까?

Go 영역에서 신체 없는 함수는 실제로 합법적인 구조입니다. 어셈블리에서 구현되는 기능에 대한 자리 표시자 역할을 합니다. 특히 이러한 어셈블리 구현은 Floor_ARCH.s 파일(예: AMD64)에서 찾을 수 있습니다.

Go 사양에 명시된 대로:

함수 선언에서는 본문이 생략될 수 있습니다. 이러한 선언은 어셈블리 루틴과 같이 Go 외부에서 구현되는 함수에 대한 서명을 제공합니다.

따라서 Floor 함수는 Go 정의에서 본문이 부족한 것처럼 보이지만 실제로는 어셈블리에서 구현되어 다음을 제공합니다. 필요한 실행 로직.

위 내용은 Go 함수에 본체가 없지만 어떻게 올바르게 작동할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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