diff --git a/CHANGELOG.md b/CHANGELOG.md index 0da5ee20..b93066f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ FEATURES: - [common] Error.Error() includes cause + - [common] IsEmpty() for 0 length ## 0.8.0 (develop branch) diff --git a/common/nil.go b/common/nil.go index c7617f08..31f75f00 100644 --- a/common/nil.go +++ b/common/nil.go @@ -16,3 +16,14 @@ func IsTypedNil(o interface{}) bool { return false } } + +// Returns true if it has zero length. +func IsEmpty(o interface{}) bool { + rv := reflect.ValueOf(o) + switch rv.Kind() { + case reflect.Array, reflect.Chan, reflect.Map, reflect.Slice, reflect.String: + return rv.Len() == 0 + default: + return false + } +}