Go 允許透過方法集在同一個類型中重載方法,即定義具有相同名稱但參數不同的多個方法。方法集必須包含在介面中,方法名稱相同,參數類型不同,傳回值類型可以相同或不同。例如,Point 類型可以重載 Distance 方法,一個接受另一個 Point 參數,一個不接受參數。
Go 不支援傳統意義上的方法重載,即在同一個類型中定義具有相同名稱但參數不同的方法。但是,Go 提供了一種替代方案,稱為方法集,允許定義具有相同名稱但參數不同的多個方法。
要在Go 中重載方法,可以使用以下語法:
type TypeName interface { MethodName(param1Type param1Name, param2Type param2Name, ...)returnType }
讓我們考慮一個範例,說明如何在Point
類型中重載Distance
方法。
type Point struct { x, y float64 } func (p Point) Distance(q Point) float64 { return math.Sqrt(math.Pow(p.x-q.x, 2) + math.Pow(p.y-q.y, 2)) } func (p Point) DistanceToOrigin() float64 { return math.Sqrt(math.Pow(p.x, 2) + math.Pow(p.y, 2)) }
在上面範例中,Point
類型有兩個 Distance
方法:一個採用另一個 Point
參數,一個不採用參數。編譯器根據方法的參數類型進行區分,因此我們可以為這兩個方法使用相同的名稱。
以上是如何重載 golang 方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!