反映。Elem()函数在 Golang 中的应用示例
原文:https://www . geesforgeks . org/reflect-elem-function-in-golang-with-examples/
Go 语言提供了运行时反射的内置支持实现,并允许程序在反射包的帮助下操作任意类型的对象。反映。Golang 中的 Elem() 函数用于获取接口 v 包含的或者指针 v 指向的值。要访问这个函数,需要在程序中导入反射包。
语法:
```go func (v Value) Elem() Value
```
参数:此功能不接受任何参数。
返回值:该函数返回接口 v 包含的值。
以下示例说明了上述方法在 Golang 中的使用:
例 1:
// Golang program to illustrate
// reflect.Elem() Function
package main
import (
"fmt"
"reflect"
)
type Book struct {
Id int
Title string
Price float32
Authors []string
}
// Main function
func main() {
book := Book{}
//use of Elem() method
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 program to illustrate
// reflect.Elem() Function
package main
import (
"fmt"
"reflect"
"io"
"os"
)
// Main function
func main() {
//use of Elem() method
writerType := reflect.TypeOf((*io.Writer)(nil)).Elem()
fileType := reflect.TypeOf((*os.File)(nil))
fmt.Println(fileType.Implements(writerType))
}
输出:
true
版权属于:月萌API www.moonapi.com,转载请注明出处