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 중국어 웹사이트의 기타 관련 기사를 참조하세요!