github.com/goplus/gop@v1.2.6/printer/_testdata/38-Overload-operator/overload_op.gop (about) 1 import "math/big" 2 3 type MyBigInt struct { 4 *big.Int 5 } 6 7 func Int(v *big.Int) MyBigInt { 8 return MyBigInt{v} 9 } 10 11 func (a MyBigInt) + (b MyBigInt) MyBigInt { 12 return MyBigInt{new(big.Int).Add(a.Int, b.Int)} 13 } 14 15 func (a MyBigInt) += (b MyBigInt) { 16 a.Int.Add(a.Int, b.Int) 17 } 18 19 func -(a MyBigInt) MyBigInt { 20 return MyBigInt{new(big.Int).Neg(a.Int)} 21 } 22 23 a := Int(1r) 24 a += Int(2r) 25 println(a + Int(3r)) 26 println(-a)