package main import ( "fmt" "reflect" ) type MyStruct struct { Field1 string Field2 int } func main() { myStruct := MyStruct{ Field1: "hello", Field2: 42, } myType := reflect.TypeOf(myStruct) for i := 0; i < myType.NumField(); i++ { field := myType.Field(i) fmt.Printf("%s = %v\n", field.Name, reflect.ValueOf(myStruct).Field(i)) } }In this example, we define a simple struct with two fields, `Field1` and `Field2`. We then use the `reflect` package to obtain a `reflect.Type` object that represents the type of the struct, and iterate over its fields using the `NumField()` and `Field()` methods. For each field, we use the `reflect.ValueOf()` function to obtain a `reflect.Value` object that represents the value of the field for a specific instance of the struct, and print its name and value using `fmt.Printf()`. This example shows how go.types can be used to introspect and manipulate types and values at runtime.