4

I feel quite stupid asking this but how can I archive the following in GO?

Let's say I have two int32 which both have the value 33.
How can I combine them into one int32 with the value 3333 instead of 66?

Backslash
  • 343
  • 5
  • 12

2 Answers2

9
var a, b int32 = 33, 33
a = a*100 + b
fmt.Println(a)

Playground.

Edit: Here is a version which computes the padding depending on the number:

func main() {
    var a, b int32 = 1234, 456
    a = a*padding(b) + b
    fmt.Println(a)
}

func padding(n int32) int32 {
    var p int32 = 1
    for p < n {
        p *= 10
    }
    return p
}

Playground.

Note that you should also check that int32 won't overflow. If you don't want to worry about overflows, you can use a big.Int instead.

Ainar-G
  • 34,563
  • 13
  • 93
  • 119
4

I have no idea about the performance, compared to Ainar-G's solution, but what about this:

var a, b int32 = 33, 33
result, err := strconv.Atoi(fmt.Sprintf("%d%d", a, b))
if err != nil {
    panic(err)
}        
fmt.Println(int32(result))
Makpoc
  • 3,921
  • 1
  • 19
  • 19