struct_eface_test.go 685 B

12345678910111213141516171819202122232425262728
  1. package tests
  2. import (
  3. "testing"
  4. "github.com/modern-go/reflect2"
  5. )
  6. func Test_struct_eface(t *testing.T) {
  7. type TestObject struct {
  8. Field1 interface{}
  9. }
  10. var pEFace = func(val interface{}) interface{} {
  11. return &val
  12. }
  13. t.Run("SetIndex", testOp(func(api reflect2.API) interface{} {
  14. valType := api.TypeOf(TestObject{}).(reflect2.StructType)
  15. field1 := valType.FieldByName("Field1")
  16. obj := TestObject{}
  17. field1.Set(&obj, pEFace(100))
  18. return obj
  19. }))
  20. t.Run("GetIndex", testOp(func(api reflect2.API) interface{} {
  21. obj := TestObject{Field1: 100}
  22. valType := api.TypeOf(obj).(reflect2.StructType)
  23. field1 := valType.FieldByName("Field1")
  24. return field1.Get(&obj)
  25. }))
  26. }