Skip to content

Commit

Permalink
✨ feat(structs): add new util func for check struct field is exported
Browse files Browse the repository at this point in the history
  • Loading branch information
inhere committed Dec 12, 2022
1 parent 025464a commit 179afea
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
10 changes: 10 additions & 0 deletions structs/structs.go
Expand Up @@ -5,3 +5,13 @@ package structs
// func MapStruct(srcSt, dstSt any) {
// // TODO
// }

// IsExported field name on struct
func IsExported(fieldName string) bool {
return fieldName[0] >= 'A' && fieldName[0] <= 'Z'
}

// IsUnexported field name on struct
func IsUnexported(fieldName string) bool {
return !IsExported(fieldName)
}
24 changes: 24 additions & 0 deletions structs/structs_test.go
@@ -1 +1,25 @@
package structs_test

import (
"testing"

"github.com/gookit/goutil/structs"
"github.com/gookit/goutil/testutil/assert"
)

func TestIsExported(t *testing.T) {
assert.True(t, structs.IsExported("Name"))
assert.True(t, structs.IsExported("Abc12"))
assert.True(t, structs.IsExported("A"))
assert.False(t, structs.IsExported("name"))
assert.False(t, structs.IsExported("_name"))
assert.False(t, structs.IsExported("abc12"))
assert.False(t, structs.IsExported("123abcd"))

assert.False(t, structs.IsUnexported("Name"))
assert.False(t, structs.IsUnexported("Abc12"))
assert.True(t, structs.IsUnexported("name"))
assert.True(t, structs.IsUnexported("_name"))
assert.True(t, structs.IsUnexported("abc12"))
assert.True(t, structs.IsUnexported("123abcd"))
}

0 comments on commit 179afea

Please sign in to comment.