Golang concise solution with an explanation
After understanding that a ^ b stands for the sum of each digit (ignoring carry over) and a & b stands for whether carry over occurs on each digit, you will eas
After understanding that `a ^ b` stands for the sum of each digit (ignoring carry over) and `a & b` stands for whether carry over occurs on each digit, you will easily see that you need to add carry over `(a & b) << 1` repeatedly until no carry over occurred. (Because first carry over may produce another carry over, we should do this until no more carry over occurs)\n\n```\nfunc getSum(a int, b int) int {\n\tsum, co := a^b, a&b\n\tfor co != 0 {\n\t\tco = co << 1\n\t\tsum, co = sum^co, sum&co\n\t}\n\treturn sum\n}\n\n```
['Go']