Dalam Go, anda boleh menyesuaikan jenis dengan melebihkan operator dengan mencipta kaedah dengan nama yang sama untuk jenis, menerima contoh jenis lain dan mengembalikan jenis hasil yang sama. Dengan cara ini, pengendali tersuai boleh digunakan sama seperti operator terbina dalam, sekali gus memudahkan penggunaan kod dan kebolehbacaan.
Cara melebihkan operator untuk menyesuaikan jenis dalam Go
Dalam Go, kadangkala jenis tersuai diperlukan untuk memenuhi keperluan projek. Untuk menjadikan kod lebih mudah digunakan dan boleh dibaca, anda boleh mempertimbangkan pengendali terlebih muatan untuk menyesuaikan jenis.
Tatabahasa
Sintaks operator terlampau beban dalam Go adalah seperti berikut:
func (t *Type) Operator(otherOperand Type) Type
di mana Operator
ialah operator yang akan dibebankan, seperti +
, -
, ==
, dsb. t
dan otherOperand
ialah dua operan, kedua-duanya adalah contoh jenis Type
. Jenis pemulangan juga mestilah daripada jenis Jenis
. . Nama kaedah mestilah sama dengan operator yang terlebih beban. Operator
是要重载的运算符,如 +
、-
、==
等。t
和 otherOperand
是两个操作数,它们都是 Type
类型的实例。返回类型也必须是 Type
类型。
方法重载
要重载一个运算符,需要创建一个方法,该方法接收另一个 Type
实例并返回 Type
类型的结果。该方法的名称必须与要重载的运算符相同。
实战案例
假设我们有一个 Vector
类型,需要重载 +
运算符来实现两个向量的加法。我们可以定义如下方法:
type Vector struct { X float64 Y float64 Z float64 } func (v Vector) Add(other Vector) Vector { return Vector{ X: v.X + other.X, Y: v.Y + other.Y, Z: v.Z + other.Z, } }
使用重载的运算符
重载了 +
运算符后,可以像使用内置运算符一样使用它。例如,可以将两个 Vector
Kes praktikal
🎜🎜Andaikan kita mempunyai jenisVector
dan perlu membebankan operator +
untuk menambah dua vektor. Kami boleh mentakrifkan kaedah berikut: 🎜v1 := Vector{1, 2, 3} v2 := Vector{4, 5, 6} v3 := v1.Add(v2) // 使用重载的 + 运算符 fmt.Println(v3) // 输出:{5 7 9}
+
, anda boleh menggunakannya sama seperti operator terbina dalam. Sebagai contoh, dua contoh Vektor
boleh ditambah: 🎜rrreee🎜Dengan lebih muatan operator, anda boleh menyesuaikan gelagat sesuatu jenis, menjadikannya lebih mudah untuk digunakan dan difahami. 🎜Atas ialah kandungan terperinci Bagaimana untuk membebankan operator untuk jenis tersuai di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!