為什麼Go 允許編譯函數中未使用的參數
從C 轉換到Go 時,一個顯著的差異是Go 禁止編譯未使用的參數函數內的變數。然而,這條規則似乎與使用未使用的函數參數成功編譯以下程式碼相矛盾:
func main() { print(computron(3, -3)); } func computron(param_a int, param_b int) int { return 3 * param_a; }
儘管沒有官方解釋,但Go 貢獻者提供的理由表明:
未使用的另一個用例參數在實作介面中。例如,統一權重圖函數可以忽略節點值:
func (graph *MyGraph) Distance(node1,node2 Node) int { return 1 }
雖然可以將未使用的參數限制為僅名為「_」的參數,但Go 1 未來相容性保證排除了這種情況這樣的改變。此外,未使用的參數提供了隱式文檔,有助於程式碼庫的理解和維護。
總而言之,缺乏具體原因表明 Go 允許使用未使用的函數參數進行編譯的決定是基於合理的(儘管是任意的) ,判斷它們比禁止它們的存在更有價值。
以上是為什麼 Go 允許使用未使用的函數參數進行編譯,但不允許使用未使用的變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!