Golang reflect.SetBool()函数及示例

Go 语言提供了运行时反射的内置支持,使程序可以使用 reflect 包操作任意类型的对象。 reflect.SetBool() 函数用于设置 v 的基础值。要访问此函数,需要在程序中导入 reflect 包。

语法:

func (v Value) SetBool(x bool)

参数: 此函数接受一个 bool 类型的参数(x)。

返回值: 此函数不返回任何值。

下面的示例说明了在 Golang 中使用上述方法的用法:

示例1:

// Golang 程序演示
// reflect.SetBool() 函数

package main

import (
    "fmt"
    "reflect"
)

// 主函数
func main() {

    typ := reflect.StructOf([]reflect.StructField{
        {
            Name: "Height",
            Type: reflect.TypeOf(bool(true)),
            Tag:  `json:"height"`,
        },
        {
            Name: "Age",
            Type: reflect.TypeOf(int(0)),
            Tag:  `json:"age"`,
        },
    })

    v := reflect.New(typ).Elem()
    v.Field(0).SetBool(true)
    fmt.Println(v)
} 

输出:

{true 0}

示例2:

// Golang 程序演示
// reflect.SetBool() 函数

package main

import (
    "fmt"
    "reflect"
)

type Foo struct {
    A int `tag1:"First Tag" tag2:"Second Tag"`
    B string
    C bool
}

func main() {
    greeting := "ABC"
    f := Foo{A: 10, B: "Geek1", C:true}

    gVal := reflect.ValueOf(greeting)
    fmt.Println(gVal.Interface())

    gpVal := reflect.ValueOf(&greeting;)
    gpVal.Elem().SetString("Geek2")
    fmt.Println(greeting)

    fType := reflect.TypeOf(f)
    fVal := reflect.New(fType)
    fVal.Elem().Field(0).SetInt(20)
    fVal.Elem().Field(1).SetString("Geeksforgeeks")
    fVal.Elem().Field(2).SetBool(false)
    f2 := fVal.Elem().Interface().(Foo)
    fmt.Printf("%+v, %d, %s, %+v\n", f2, f2.A, f2.B, f2.C)
} 

输出:

ABC
Geek2
{A:20 B:Geeksforgeeks C:false}, 20, Geeksforgeeks, false