Go 對未使用函數參數的容忍度:設計問題
與 C 不同,Go 禁止編譯包含未使用變數的程式。然而,它提出了關於允許未使用的函數參數的問題。讓我們深入研究一下這種明顯不一致背後的原因。
最初,Go 允許編譯具有未使用參數的函數似乎違反直覺。然而,該語言的設計者做出這個決定有特定的動機。根據 Go 社群內的討論,它源自於未使用的變數和未使用的函數參數之間的根本差異。
雖然未使用的變數通常被認為是程式錯誤,但通常的做法是使用不總是使用的參數來聲明函數。在這種情況下,使用底線(_) 未命名參數可能會導致混亂,特別是對於不使用任何參數的函數,如func foo(_, _ int).
未使用的參數名稱作為重要的文檔,為該功能提供額外的背景和意圖。這在實作介面時變得尤為重要。例如,在圖上執行的函數在計算跨邊距離時可能不需要考慮節點,如範例func (graph *MyGraph) Distance(node1, node2 Node) int {...}.
所示由於Go 語言的未來相容性保證,在未使用時禁止名為_ 的參數的另一種可能的解決方案最終被駁回。此外,即使未使用的參數也可以提供隱式文檔,支援程式碼的可發現性和可讀性。
本質上,允許未使用的函數參數的決定是由文件、常見程式設計實踐和一致性等因素驅動的設計選擇與語言的其他方面。雖然可能沒有單一、明確的原因,但這個選擇背後的基本原理強調了塑造 Go 設計理念的細緻入微的思考過程。
以上是為什麼Go允許未使用的函數參數而禁止未使用的變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!