Go membenarkan lebihan kaedah dalam jenis yang sama melalui set kaedah, iaitu, mentakrifkan berbilang kaedah dengan nama yang sama tetapi parameter berbeza. Set kaedah mesti disertakan dalam antara muka, nama kaedah adalah sama, jenis parameter berbeza, dan jenis nilai pulangan boleh sama atau berbeza. Contohnya, jenis Titik boleh membebankan kaedah Jarak, kaedah yang menerima parameter Titik lain dan kaedah yang tidak menerima parameter.
Go tidak menyokong kaedah lebih muatan dalam erti kata tradisional, iaitu, mentakrifkan kaedah dengan nama yang sama tetapi parameter berbeza dalam jenis yang sama. Walau bagaimanapun, Go menyediakan alternatif yang dipanggil set kaedah, yang membenarkan mentakrifkan berbilang kaedah dengan nama yang sama tetapi parameter berbeza.
Untuk melebihkan kaedah dalam Go, anda boleh menggunakan sintaks berikut:
type TypeName interface { MethodName(param1Type param1Name, param2Type param2Name, ...)returnType }
Mari kita pertimbangkan contoh cara untuk melebihkan Point
taip kod> kaedah. 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
rrreee
Point
mempunyai dua kaedah Jarak
: satu yang mengambil satu lagi parameter Point
dan satu yang tidak mengambil parameter . Pengkompil membezakan berdasarkan jenis parameter kaedah, jadi kita boleh menggunakan nama yang sama untuk kedua-dua kaedah. NotaAtas ialah kandungan terperinci Bagaimana untuk membebankan kaedah golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!