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)