github.com/Psiphon-Inc/goarista@v0.0.0-20160825065156-d002785f4c67/areflect/force_test.go (about) 1 // Copyright (C) 2016 Arista Networks, Inc. 2 // Use of this source code is governed by the Apache License 2.0 3 // that can be found in the COPYING file. 4 5 package areflect 6 7 import ( 8 "reflect" 9 "testing" 10 ) 11 12 type somestruct struct { 13 a uint32 14 } 15 16 func TestForcePublic(t *testing.T) { 17 c := somestruct{a: 42} 18 v := reflect.ValueOf(c) 19 // Without the call to forceExport(), the following line would crash with 20 // "panic: reflect.Value.Interface: cannot return value obtained from 21 // unexported field or method". 22 a := ForceExport(v.FieldByName("a")).Interface() 23 if i, ok := a.(uint32); !ok { 24 t.Fatalf("Should have gotten a uint32 but got a %T", a) 25 } else if i != 42 { 26 t.Fatalf("Should have gotten 42 but got a %d", i) 27 } 28 }