Talk is cheap.
func multiply(A []int) []int {
if len(A) == 0 { return nil }
B := []int{1}
for i := 1; i < len(A); i++ {
B = append(B, B[i - 1] * A[i- 1])
}
tmp := 1
for j := len(A) - 2; j >=0; j-- {
tmp *= A[j + 1]
B[j] *= tmp
}
return B
}