如果处理的字段数量较少,则应使用simple
if
用于确定它们是否
nil
或者不是。
if args.Stars == nil && args.Commentary == nil {
// ...
}
如果您处理的字段比您想在中手动拼写的字段多
如果
语句您可以使用一个简单的助手函数,该函数的变量数为
interface{}
参数。
func AllNil(vv ...interface{}) bool {
for _, v := range vv {
if v != nil {
return false
}
}
return true
}
if AllNil(args.Stars, args.Commentary, args.Foo, args.Bar, args.Baz) {
// ...
}
或者您可以使用
reflect
包做你的出价。
func NilFields(x interface{}) bool {
rv := reflect.ValueOf(args)
rv = rv.Elem()
for i := 0; i < rv.NumField(); i++ {
if !rv.Field(i).IsNil() {
return false
}
}
return true
}
if NilFields(args) {
// ...
}
但请记住:
Check for nil and nil interface in Go