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
极客教程