Reflection Basics
Struct Fields
Reflection can enumerate a struct type's fields and names.
Struct Fields
struct_fields.go
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string
Level int
}
func main() {
var level =
user := User{Name: "Ada", Level: level}
userType := reflect.TypeOf(user)
firstField := userType.Field(0)
secondField := userType.Field(1)
fmt.Println("level=", level)
fmt.Println("type=", userType.Name())
fmt.Println("field_count=", userType.NumField())
fmt.Println("first_field=", firstField.Name)
fmt.Println("second_type=", secondField.Type.String())
}
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string
Level int
}
func main() {
var level =
user := User{Name: "Ada", Level: level}
userType := reflect.TypeOf(user)
firstField := userType.Field(0)
secondField := userType.Field(1)
fmt.Println("level=", level)
fmt.Println("type=", userType.Name())
fmt.Println("field_count=", userType.NumField())
fmt.Println("first_field=", firstField.Name)
fmt.Println("second_type=", secondField.Type.String())
}
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string
Level int
}
func main() {
var level =
user := User{Name: "Ada", Level: level}
userType := reflect.TypeOf(user)
firstField := userType.Field(0)
secondField := userType.Field(1)
fmt.Println("level=", level)
fmt.Println("type=", userType.Name())
fmt.Println("field_count=", userType.NumField())
fmt.Println("first_field=", firstField.Name)
fmt.Println("second_type=", secondField.Type.String())
}
struct fields
Use field metadata when a framework or helper needs to inspect the shape of a struct.