field: add Kind() method
This commit is contained in:
parent
add65496af
commit
8292271263
@ -98,6 +98,9 @@ value := name.Value().(string)
|
|||||||
// Set the field's value
|
// Set the field's value
|
||||||
name.Set("another gopher")
|
name.Set("another gopher")
|
||||||
|
|
||||||
|
// Get the field's kind, kind => "string"
|
||||||
|
name.Kind()
|
||||||
|
|
||||||
// Check if the field is exported or not
|
// Check if the field is exported or not
|
||||||
if name.IsExported() {
|
if name.IsExported() {
|
||||||
fmt.Println("Name field is exported")
|
fmt.Println("Name field is exported")
|
||||||
|
|||||||
5
field.go
5
field.go
@ -54,6 +54,11 @@ func (f *Field) Name() string {
|
|||||||
return f.field.Name
|
return f.field.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Kind returns the fields kind, such as "string", "map", "bool", etc ..
|
||||||
|
func (f *Field) Kind() reflect.Kind {
|
||||||
|
return f.value.Kind()
|
||||||
|
}
|
||||||
|
|
||||||
// Set sets the field to given value v. It retuns an error if the field is not
|
// Set sets the field to given value v. It retuns an error if the field is not
|
||||||
// settable (not addresable or not exported) or if the given value's type
|
// settable (not addresable or not exported) or if the given value's type
|
||||||
// doesn't match the fields type.
|
// doesn't match the fields type.
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
package structs
|
package structs
|
||||||
|
|
||||||
import "testing"
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
// A test struct that defines all cases
|
// A test struct that defines all cases
|
||||||
type Foo struct {
|
type Foo struct {
|
||||||
@ -109,6 +112,26 @@ func TestField(t *testing.T) {
|
|||||||
_ = s.Field("no-field")
|
_ = s.Field("no-field")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestField_Kind(t *testing.T) {
|
||||||
|
s := newStruct()
|
||||||
|
|
||||||
|
f := s.Field("A")
|
||||||
|
if f.Kind() != reflect.String {
|
||||||
|
t.Errorf("Field A has wrong kind: %s want: %s", f.Kind(), reflect.String)
|
||||||
|
}
|
||||||
|
|
||||||
|
f = s.Field("B")
|
||||||
|
if f.Kind() != reflect.Int {
|
||||||
|
t.Errorf("Field B has wrong kind: %s want: %s", f.Kind(), reflect.Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
// unexported
|
||||||
|
f = s.Field("d")
|
||||||
|
if f.Kind() != reflect.String {
|
||||||
|
t.Errorf("Field d has wrong kind: %s want: %s", f.Kind(), reflect.String)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestField_Tag(t *testing.T) {
|
func TestField_Tag(t *testing.T) {
|
||||||
s := newStruct()
|
s := newStruct()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user