Вам нужно преобразовать , используя преобразование типов, как объяснено здесь . В этом случае, как подчеркивает mkopriva в своем комментарии, вы должны конвертировать volume
значение переменной в float32.
Также позволяет показать способ работы со значениями nil, имеющими значение на уровне приложения, для этого я написал float32PtrToFloat (* float32, float32) со вторым параметром, который позволяет вам указать, какое значение должно быть взято вместо нуля
Предполагая, что нулевое значение переводится в нулевое значение, здесь приведен полный пример
package main
import (
"fmt"
)
func main() {
var totalPrice *float32
var price *float32
var volume int
var total = float32PtrToFloat(price, 0) * float32(volume)
totalPrice = &total
fmt.Println(*totalPrice)
}
func float32PtrToFloat(price *float32, valueIfNil float32) float32 {
if price == nil {
return valueIfNil
} else {
return *price
}
}
И при личном чтении, следуя совету JimB, старайтесь не использовать числа с плавающей запятой для значений валюты, поскольку арифметика с плавающей запятой ненадежна. Вместо этого используйте целочисленные значения, используя 1 в качестве нижнего значения в текущей валюте, например:
- 1 = 1 копейка (или)
- 1 = 1 цент (или)
- 1 = 1 сентаво (в моем случае)