func (s *Struct) Field(id int) (*FieldType, reflect.Value) {
	if !s.checkID(id) {
		return nil, zero
	}
	t := s.StructType.fields[id]
	return t, s.getOrInit(t, true).elemVal
}
Field get the field type and value corresponding to the id.
NOTE:
By the way, the relevant nil pointer fields will be initialized
package gofield
import (
	"reflect"
	"unsafe"
)
type (
	Struct struct {
		*StructType
		structPtrs []uintptr  
	}
	Value struct {
		elemVal reflect.Value
		elemPtr uintptr
	}
)
func newStruct(typ *StructType, elemPtr uintptr) *Struct {
	s := &Struct{
		StructType: typ,
		structPtrs: make([]uintptr, typ.structNum),
	}
	s.structPtrs[0] = elemPtr
	return s
}
func (s *Struct) FieldValue(id int) reflect.Value {
	if !s.checkID(id) {
		return zero
	}
	return s.getOrInit(s.StructType.fields[id], true).elemVal
}