测试整数乘法的溢出

Overflows don't seem to be part of the builtin packages in go.

What is the best way to test that you don't overflow when multiplying 2 integers ?

Something similar to Java Math.multiplyExact ...

It'd be possible for you to write your own multiplyExact based on the suggestions on this thread:

https://groups.google.com/forum/#!msg/golang-nuts/h5oSN5t3Au4/KaNQREhZh0QJ

const mostNegative = -(mostPositive + 1)
const mostPositive = 1<<63 - 1

func multiplyExact(a, b int64) (int64, error) {
    result := a * b
    if a == 0 || b == 0 || a == 1 || b == 1 {
        return result, nil
    }
    if a == mostNegative || b == mostNegative {
        return result, fmt.Errorf("Overflow multiplying %v and %v", a, b)
    }
    if result/b != a {
        return result, fmt.Errorf("Overflow multiplying %v and %v", a, b)
    }
    return result, nil
}

Playground: https://play.golang.org/p/V_TSC44VcPY