Golang reflect.Elem() 函数及示例

Golang reflect.Elem() 函数及示例

Go语言通过反射实现了运行时反射支持,使程序能够使用reflect包操作任意类型的对象。 reflect.Elem() 函数用于获取接口v包含或指针v指向的值。要访问此函数,需要在程序中导入reflect包。

语法:

func (v Value) Elem() Value

参数: 此函数不接受任何参数。

返回值: 该函数返回接口v包含的值。

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

示例1:

// Golang程序演示
// reflect.Elem()函数
  
package main
   
import (
    "fmt"
    "reflect"
       
)
type Book struct {
    Id    int   
    Title string
    Price float32
    Authors []string    
}
  
// 主要函数   
func main() {
    book := Book{}
  
    //使用Elem()方法
    e := reflect.ValueOf(&book).Elem()
       
    for i := 0; i < e.NumField(); i++ {
        varName := e.Type().Field(i).Name
        varType := e.Type().Field(i).Type
        varValue := e.Field(i).Interface()
        fmt.Printf("%v %v %v\n", varName, varType, varValue)
    }
}        ```  

输出:

Id int 0
Title string 
Price float32 0
Authors []string []

示例2:

// Golang程序演示
// reflect.Elem()函数
  
package main
   
import (
    "fmt"
    "reflect"
     "io"
     "os"     
)
  
// 主要函数   
func main() {
  
    //使用Elem()方法
    writerType := reflect.TypeOf((*io.Writer)(nil)).Elem()
  
    fileType := reflect.TypeOf((*os.File)(nil))
    fmt.Println(fileType.Implements(writerType))
}     ```  

输出:

true

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程