reflect.Value.SetFloat
Метод reflect.Value.SetFloat используется для установки нового значения числа с плавающей точкой через отражение. В первый параметр метод принимает значение типа float64, которое будет присвоено переменной. Важно учитывать, что устанавливаемое значение должно быть совместимо с типом переменной, которую мы изменяем: если переменная имеет тип float32, значение будет автоматически преобразовано, но может произойти потеря точности.
Синтаксис
reflect.Value.SetFloat(float64)
Пример
Давайте установим новое значение для переменной типа float64 через отражение:
package main
import (
"fmt"
"reflect"
)
func main() {
var x float64 = 3.14
v := reflect.ValueOf(&x).Elem()
if v.CanSet() {
v.SetFloat(2.718)
}
fmt.Println(x)
}
Результат выполнения кода:
2.718
Пример
Давайте установим новое значение для переменной типа float32 через отражение:
package main
import (
"fmt"
"reflect"
)
func main() {
var x float32 = 1.23
v := reflect.ValueOf(&x).Elem()
if v.CanSet() {
v.SetFloat(4.56)
}
fmt.Println(x)
}
Результат выполнения кода:
4.56
Обработка паники
Метод reflect.Value.SetFloat вызывает панику, если значение не является числом с плавающей точкой или если оно не может быть изменено (недоступно для записи). Перед вызовом метода всегда проверяйте доступность значения через reflect.Value.CanSet.
package main
import (
"fmt"
"reflect"
)
func main() {
var x float64 = 5.67
v := reflect.ValueOf(x)
fmt.Println("CanSet:", v.CanSet())
if v.CanSet() {
v.SetFloat(8.90)
} else {
fmt.Println("Cannot set value")
}
}
Результат выполнения кода:
CanSet: false
"Cannot set value"
Смотрите также
-
метод
reflect.Value.Set,
который устанавливает значение для любого типа -
метод
reflect.Value.SetInt,
который устанавливает целочисленное значение -
метод
reflect.Value.SetString,
который устанавливает строковое значение -
метод
reflect.Value.SetBool,
который устанавливает логическое значение