РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1514 of 1593 menu

Метод reflect.Value.SetBool

Метод reflect.Value.SetBool устанавливает новое логическое значение для переменной, представленной объектом reflect.Value. В первый параметр метод принимает значение типа bool, которое будет присвоено переменной. Для успешной установки значения необходимо, чтобы переменная была адресуемой (CanSet возвращает true) и имела тип bool, иначе метод вызовет панику.

Синтаксис

func (v Value) SetBool(x bool)

Пример

Давайте создадим переменную типа bool и изменим ее значение с помощью метода SetBool:

package main import ( "fmt" "reflect" ) func main() { var isActive bool = true fmt.Println("Before:", isActive) v := reflect.ValueOf(&isActive).Elem() v.SetBool(false) fmt.Println("After:", isActive) }

Результат выполнения кода:

"Before: true" "After: false"

Пример

Метод SetBool также работает с полями структур. Изменим значение поля типа bool в структуре:

package main import ( "fmt" "reflect" ) type Config struct { Enabled bool Active bool } func main() { cfg := Config{Enabled: true, Active: false} fmt.Println("Before:", cfg) v := reflect.ValueOf(&cfg).Elem() field := v.FieldByName("Enabled") field.SetBool(false) fmt.Println("After:", cfg) }

Результат выполнения кода:

"Before: {true false}" "After: {false false}"

Пример

Важно проверять возможность установки значения с помощью метода CanSet перед вызовом SetBool, чтобы избежать паники:

package main import ( "fmt" "reflect" ) func main() { var flag bool = true v := reflect.ValueOf(flag) if v.CanSet() { v.SetBool(false) } else { fmt.Println("Cannot set value (it's not addressable)") } fmt.Println("Flag:", flag) // Правильный способ - передача указателя vPtr := reflect.ValueOf(&flag).Elem() if vPtr.CanSet() { vPtr.SetBool(false) } fmt.Println("Flag after proper set:", flag) }

Результат выполнения кода:

"Cannot set value (it's not addressable)" "Flag: true" "Flag after proper set: false"

Смотрите также

  • функцию reflect.ValueOf,
    которая создает reflect.Value из интерфейса
  • метод reflect.Value.CanSet,
    который проверяет возможность изменения значения
  • метод reflect.Value.SetInt,
    который устанавливает целочисленное значение
  • метод reflect.Value.SetString,
    который устанавливает строковое значение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить