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?
Combine two numbers
var a, b int32 = 33, 33
a = a*100 + b
fmt.Println(a)
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
}
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.
Yeah but what if the values are different, let's say 1223 and 5644 ? –
Sniggle
In padding p must be initialized with 10 to be also correct for b in { 0, 1 } –
Duran
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))
© 2022 - 2024 — McMap. All rights reserved.