📜  Golang 中的reflect.SetBool()函数示例

📅  最后修改于: 2021-10-25 02:08:31             🧑  作者: Mango

Go 语言提供了运行时反射的内置支持实现,并允许程序在反射包的帮助下操作任意类型的对象。 Golang 中的reflect.SetBool()函数用于设置v 的底层值。要访问此函数,需要在程序中导入反射包。

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

示例 1:

func (v Value) SetBool(x bool)

输出:

// Golang program to illustrate
// reflect.SetBool() Function 
    
package main
    
import (
    "fmt"
    "reflect"
)
    
// Main function
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)
}

示例 2:

{true 0}

输出:

// Golang program to illustrate
// reflect.SetBool() Function 
    
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)
}