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 中国語 Web サイトの他の関連記事を参照してください。