在 math/floor.go 的原始碼中,宣告了一個名為 Floor 的函數,該函數沒有函數體。程式碼片段如下:
func Floor(x float64) float64 func floor(x float64) float64 { if x == 0 || IsNaN(x) || IsInf(x, 0) { return x } if x < 0 { d, fract := Modf(-x) if fract != 0.0 { d = d + 1 } return -d } d, _ := Modf(x) return d }
儘管缺少主體,Floor 函數編譯成功。這是因為 Go 中的函數可以在語言本身之外實現,例如在彙編中。 Floor 的彙編實作可以在 Floor_ARCH.s(例如 AMD64)等文件中找到。
Go 語言規範允許不帶函數體的函數宣告:
函數宣告可以省略正文。這樣的聲明提供了在 Go 外部實作的函數的簽名,例如彙編例程。
以上是Golang 函數如何在沒有函數體的情況下編譯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!