條件語句中的函數求值
條件語句通常需要在其條件內求值函數。然而,當嘗試使用函數呼叫作為此類語句中的值時,Go 程式語言提出了特定要求。為了更好地理解這一點,請考慮以下範例:
package main import "fmt" func main() { if sumThis(1, 2) > sumThis(3, 4) { fmt.Println("test") } else { fmt.Println("derp") } } func sumThis(a, b int) { return a + b }
此程式碼片段嘗試比較條件語句中兩個函數呼叫的結果。但是,它無法編譯,並產生以下錯誤:
./test4.go:4: sumThis(1, 2) used as value ./test4.go:4: sumThis(3, 4) used as value ./test4.go:11: too many arguments to return
該錯誤源自於 sumThis 函數缺少回傳類型。透過省略返回類型,Go 將函數解釋為傳回 void。然後,當您嘗試將函數呼叫用作條件語句中的值時,編譯器找不到傳回類型,並將呼叫視為用於其副作用而不是傳回值。
要解決此問題,您必須明確宣告函數的傳回類型。在這種情況下,由於sumThis 函數傳回一個整數,因此它的簽名應該是:
func sumThis(a, b int) int { // ... }
使用正確的函式簽名,程式碼將成功編譯並正確比較內部函式呼叫的回傳值條件語句。
以上是如何正確使用Go條件語句中的函數呼叫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!