title: Golang Operator Overloading
body: <p>I understand that golang does not provide operator overloading, as it believe that it is increasing the complexity.</p>
  
  <p>So I want to implement that for structures directly. </p>
  
  <pre><code>package main
  
  import "fmt"
  
  type A struct {
      value1 int
      value2 int
  }
  
  func (a A) AddValue(v A) A {
      a.value1 += v.value1
      a.value2 += v.value2
      return a
  }
  
  
  func main() {
      x, z := A{1, 2}, A{1, 2}
      y := A{3, 4}
  
      x = x.AddValue(y)
  
      z.value1 += y.value1
      z.value2 += y.value2
  
      fmt.Println(x)
      fmt.Println(z)
  }
  </code></pre>
  
  <p><a href="https://play.golang.org/p/1U8omyF8-V" rel="noreferrer">https://play.golang.org/p/1U8omyF8-V</a></p>
  
  <p>From the above code, the <strong><em>AddValue</em></strong> works as I want to. However, my only concern is that it is a pass by value and hence I have to return the newly added value everytime.</p>
  
  <p>Is there any other better method, in order to avoid returning the summed up variable.</p>